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

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

前言

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

三种类型的异常

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

异常处理

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 类。


目录
相关文章
|
9天前
|
设计模式 监控 Java
Java多线程基础-11:工厂模式及代码案例之线程池(一)
本文介绍了Java并发框架中的线程池工具,特别是`java.util.concurrent`包中的`Executors`和`ThreadPoolExecutor`类。线程池通过预先创建并管理一组线程,可以提高多线程任务的效率和响应速度,减少线程创建和销毁的开销。
30 2
|
1天前
|
Java
Java代码 httpClient请求 响应
Java代码 httpClient请求 响应
|
3天前
|
Java 测试技术 Web App开发
《手把手教你》系列技巧篇(六十二)-java+ selenium自动化测试-RemoteWebDriver让你的代码与测试分离(远程测试)
【6月更文挑战第3天】本文介绍了在没有本地浏览器的情况下,如何使用RemoteWebDriver进行远程自动化测试。RemoteWebDriver分为客户端和服务端,客户端运行测试代码,服务端启动服务。服务端需要安装JDK、浏览器和对应的WebDriver,并启动selenium-server-standalone.jar。客户端通过URL连接到服务端,并指定预期的浏览器类型。这样,客户端的测试代码就能远程控制服务端的浏览器执行自动化测试。RemoteWebDriver的优点包括跨平台和浏览器测试、提高测试稳定性以及使测试环境和执行代码的机器分离。
21 3
|
5天前
|
存储 并行计算 安全
Java语言编写代码的技术性探讨
Java语言编写代码的技术性探讨
|
5天前
|
安全 Java API
Java语言中的代码安全性探讨
Java语言中的代码安全性探讨
|
7天前
|
Java C++
如何在JAVA代码中嵌入汇编
如何在JAVA代码中嵌入汇编
12 1
|
7天前
|
Java Linux
Linux下如何定位最耗CPU的JAVA代码
Linux下如何定位最耗CPU的JAVA代码
15 0
|
7天前
|
存储 Java 编译器
Java方法的基本内存原理与代码实例
Java方法的基本内存原理与代码实例
15 0
|
9天前
|
存储 Java 调度
Java多线程基础-11:工厂模式及代码案例之线程池(二)
这篇内容介绍了Java多线程基础,特别是线程池中的定时器和拒绝策略。
24 0
|
9天前
|
Java 调度
Java多线程基础-10:代码案例之定时器(二)
Java 多线程基础中,定时器(Timer)的实现通常使用 `PriorityBlockingQueue` 和 `wait/notify` 机制来管理任务。
18 0