前言
本文本来是只介绍常见异常的,因为某种原因,要介绍什么是异常还有异常的处理以及常见的异常。
文章目录
什么是异常
在Java中,异常(Exception)是指程序执行过程中可能出现的不正常情况或错误。它是一个事件,它会干扰程序的正常执行流程,并可能导致程序出现错误或崩溃。
常见的异常
Java常见的异常包括但不限于以下几种:
异常类型 | 描述 |
---|---|
NullPointerException(空指针异常) | 当试图调用实例方法或访问实例变量时,对象引用为 null 时抛出。 |
ArrayIndexOutOfBoundsException(数组越界异常) | 当访问数组中不存在的元素时抛出。 |
ClassCastException(类转换异常) | 当试图将对象强制转换为不是其子类的类型时抛出。 |
ArithmeticException(算术异常) | 当试图做出违反算术规则的操作时抛出,比如除以零。 |
IllegalArgumentException(非法参数异常) | 当传递给方法的参数不正确或不符合预期时抛出。 |
IllegalStateException(非法状态异常) | 当对象处于非法、不一致的状态时抛出。 |
IOException(输入输出异常) | 当任何输入输出操作失败或中断时抛出。 |
NoSuchMethodException(无此方法异常) | 当试图调用不存在的方法时抛出。 |
SecurityException(安全异常) | 当安全管理器禁止操作时抛出。 |
InterruptedException(线程中断异常) | 当线程被中断时抛出。 |
我挑几个,进行代码演示,上面表格都有报了什么错的解释~
算术异常 (ArithmeticException)
当试图做出违反算术规则的操作时抛出,比如除以零。
public class Demo {
public static void main(String[] args){
System.out.println(2/0);
}
}
结果:
数组越界异常(ArrayIndexOutOfBoundsException)
当访问数组中不存在的元素时抛出。
public class Demo {
public static void main(String[] args) {
int [] list = new int[]{1,2,3};
System.out.println(list[3]);
}
}
结果:
空指针异常(NullPointerException)
当试图调用实例方法或访问实例变量时,对象引用为 null 时抛出。
public class Demo {
public static void main(String[] args) {
String temp = null;
System.out.println(temp.length());
}
}
结果:
以上都是常见的异常,还有很多可以去官网看看
异常的处理
异常捕获指在程序运行过程中,发生了一些不可预测的错误或异常,需要对这些错误或异常进行捕获和处理的过程。在编程中,我们可以使用 try-catch-finally 语句块来进行异常捕获。
- try:将可能会出错的代码放入 try 块中。
- catch:当 try 块中的代码出现异常时,程序会跳转到 catch
块去处理异常,防止程序崩溃。 - finally:不管 try 块中的代码是否正常执行,finally
块中的代码都会被执行,通常用来释放资源。
以下是一个简单的异常处理和捕获的例子:
try {
// 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
// 处理特定类型的异常1
} catch (ExceptionType2 e2) {
// 处理特定类型的异常2
} finally {
// 必须执行的代码块
}
在上面的代码中,try块中的代码可能会抛出异常。如果抛出了ExceptionType1类型的异常,将跳转到第一个catch块中处理它。如果抛出了ExceptionType2类型的异常,将跳转到第二个catch块中处理它。无论是否出现异常,finally块中的代码都将执行。
需要注意的是,在Java中,异常处理应该尽可能地处理所有可能的异常,并且应该总是使用try-catch-finally块,即使代码中出现了Unchecked Exception。这样可以确保程序的稳定性和可靠性。
总结
Java常见的异常包括但不限于以下几种:
异常类型 | 描述 |
---|---|
NullPointerException(空指针异常) | 当试图调用实例方法或访问实例变量时,对象引用为 null 时抛出。 |
ArrayIndexOutOfBoundsException(数组越界异常) | 当访问数组中不存在的元素时抛出。 |
ClassCastException(类转换异常) | 当试图将对象强制转换为不是其子类的类型时抛出。 |
ArithmeticException(算术异常) | 当试图做出违反算术规则的操作时抛出,比如除以零。 |
IllegalArgumentException(非法参数异常) | 当传递给方法的参数不正确或不符合预期时抛出。 |
IllegalStateException(非法状态异常) | 当对象处于非法、不一致的状态时抛出。 |
IOException(输入输出异常) | 当任何输入输出操作失败或中断时抛出。 |
NoSuchMethodException(无此方法异常) | 当试图调用不存在的方法时抛出。 |
SecurityException(安全异常) | 当安全管理器禁止操作时抛出。 |
InterruptedException(线程中断异常) | 当线程被中断时抛出。 |
以上都是常见的异常,还有很多可以去官网看看