【JAVA】我们该如何规避代码中可能出现的错误?(一)

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】


文章目录

  • 前言
  • 三种类型的异常
  • 异常处理
  • JAVA内置异常类
  • Exception 类的层次


前言

异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的,学习一些异常处理方式往往可以使我们编程的时间大大减少。
在这里插入图片描述

三种类型的异常

  • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  • 错误错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

异常处理

Java中的异常处理是一种机制,用于处理程序中可能出现的错误和异常。当程序遇到错误或异常时,它会产生一个异常对象,并抛出该对象,然后程序控制权就会被传递到相应的异常处理程序中。

主要步骤:

  1. 在程序中可能发生异常的代码周围使用try-catch语句块。
  2. 在try语句块中包含可能产生异常的代码。
  3. 在catch语句块中编写处理异常的代码。
  4. 可以使用多个catch块来处理不同类型的异常
  5. 可以使用finally语句块来在任何情况下执行某些代码(例如关闭文件或释放资源)。

在这里插入图片描述

try {// 可能会抛出异常的代码
} catch (ExceptionType1 ex) {// 处理类型为ExceptionType1的异常
} catch (ExceptionType2 ex) {// 处理类型为ExceptionType2的异常
} finally {// 在try或catch块结束后一定会执行的代码
}

我们使用了一个try-catch-finally语句块来处理可能出现的异常。如果try块中的代码抛出了类型为ExceptionType1的异常,那么程序将跳转到第一个catch块,并执行相应的异常处理代码。如果try块中的代码抛出了类型为ExceptionType2的异常,那么程序将跳转到第二个catch块,并执行相应的异常处理代码。无论在try块中发生了什么,finally块中的代码都会被执行

JAVA内置异常类

为了处理可能出现的异常,Java提供了一些内置的异常类
Java 语言定义的一些异常类在 java.lang 标准包中。
标准运行时异常类的子类是最常见的异常类。由于 java.lang 包是默认加载到所有的 Java 程序的,所以大部分从运行时异常类继承而来的异常都可以直接使用。

常见的Java内置异常类:
ArithmeticException:数学运算异常,例如除以零操作。
ArrayIndexOutOfBoundsException:数组下标越界异常,例如访问不存在的数组元素。
ClassNotFoundException:类找不到异常,例如使用Class.forName()方法时,找不到所需的类。
IOException:输入输出异常,例如读取或写入文件时发生的异常。
NullPointerException:空指针异常,例如调用空对象的方法或属性。
IllegalArgumentException:非法参数异常,例如传递给方法的参数不合法。
InterruptedException:线程中断异常,例如调用Thread.sleep()方法时,线程被其他线程中断。
RuntimeException:运行时异常,例如在程序运行过程中发生的未知异常。
每个异常类都有自己的特点和处理方式,处理异常是Java编程中的一个重要概念

Exception 类的层次

所有的异常类是从 java.lang.Exception 类继承的子类。
Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。

Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外
Error 用来指示运行时环境发生的错误。
例如,JVM 内存溢出。一般地,程序不会从错误中恢复。
异常类有两个主要的子类:IOException 类和 RuntimeException 类。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/72469.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企望制造ERP系统 RCE漏洞[2023-HW]

企望制造ERP系统 RCE漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC检测 五、 修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,…

【菜鸡读论文】MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection

【菜鸡读论文】MS-TCT: Multi-Scale Temporal ConvTransformer for Action Detection 大家好哇!是谁美滋滋地准备开始放暑假了!没错!你没有听错!放暑假! 谁能想到都已经立秋了,竟然有人还在实验室&#xf…

优测云服务平台|【压力测试功能升级】轻松完成压测任务

一、本次升级主要功能如下: 1.多份报告对比查看测试结果 2.报告新增多种下载格式 Word格式Excel格式 3.新增多种编排复杂场景的控制器 漏斗控制器并行控制器事务控制器仅一次控制器分组控制器集合点 4.新增概览页面,包含多种统计维度 二、报告对比…

中远麒麟堡垒机 SQL注入漏洞复现

0x01 产品简介 中远麒麟依托自身强大的研发能力,丰富的行业经验,自主研发了新一代软硬件一体化统一安全运维平台一-iAudit 统一安全运维平台。该产品支持对企业运维人员在运维过程中进行统一身份认证、统一授权、统一审计、统一监控,消除了传统运维过程中…

【自用】云服务器 使用 docker 搭建 HomeAssistant + MQTT 物联网平台

总览 1.搭建流程概述 2.准备工作 3.开始搭建! 4.总结 如果想看 ESP32 或其他使用 MicroPython 编程的单片机如何连接到该云服务器,实现 HomeAssistant 控制 单片机的内容,请看我这篇博客的下一篇。 一、搭建流程概述 0.总体流程 我们需要…

μCOS-Ⅲ_简介

μCOS-Ⅲ简介 文章目录 μCOS-Ⅲ简介前言一、什么是 C/OS-III?二、C/OS-III的特点三、C/OS-III的版本和参考资料1、C/OS-III版本2、C/OS-III源码获取3、C/OS-III参考资料 四、C/OS-III源码简介总结 前言 μcos-III是一个可以基于ROM运行的、可裁剪的、抢占式、实时…

leetcode 415.字符串相加

⭐️ 题目描述 🌟 leetcode链接:https://leetcode.cn/problems/add-strings/description/ ps: 从两个字符串的末尾开始遍历,依次相加,若大于等于 10 则使用一个变量记录进位,遍历的时候若两个字符串其中一…

k8s简介、虚拟机快速搭建k8s集群、集群管理方式及K8S工作原理和组件介绍

文章目录 1、k8s简介1.1、部署方式的变迁1.2、定义1.3、Kubernetes提供的功能 2、虚拟机快速搭建k8s集群2.1、虚拟机配置(centos7 2G内存2个处理器)2.2、基础环境准备2.3、docker安装(易踩坑)2.4、安装k8s组件2.5、master节点部署…

一百六十、Kettle——Linux上安装的Kettle9.2.0连接Hive3.1.2

一、目标 Kettle9.2.0在Linux上安装好后,需要与Hive3.1.2数据库建立连接 之前已经在本地上用kettle9.2.0连上Hive3.1.2 二、各工具版本 (一)kettle9.2.0 kettle9.2.0安装包网盘链接 链接:https://pan.baidu.com/s/15Zq9w…

【自用】云服务器 docker 环境下 HomeAssistant 安装 HACS 教程

一、进入 docker 中的 HomeAssistant 1.查找 HomeAssistant 的 CONTAINER ID 连接上云服务器(宿主机)后,终端内进入 root ,输入: docker ps找到了 docker 的 container ID 2.config HomeAssistant 输入下面的命令&…

.netcore grpc双向流方法详解

一、双向流处理概述 简单来讲客户端可以向服务端发送消息流,服务端也可以向客户端传输响应流,即客户端和服务端可以互相通讯客户端无需发送消息即可开始双向流式处理调用 。 客户端可选择使用 RequestStream.WriteAsync 发送消息。 使用 ResponseStream…

SQL Developer中的Data Redaction

SQL Developer中的Data Redaction用起来比命令行方便多了。可以选定表或视图,右键点击“遮盖保护”菜单。 但赋权方面有需要注意的地方。 假设Redact Admin是SYS,Redact User是HR。虽然SYS具备所有权限,但还是报以下错误。其实这个错误是针…