欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > Java异常处理总结

Java异常处理总结

2025/2/23 1:38:35 来源:https://blog.csdn.net/m0_51275144/article/details/144334513  浏览:    关键词:Java异常处理总结

异常处理

  • 异常体系图
  • 常见运行时异常
  • 异常处理方式try-catch-finall
  • throws/throw 关键字
    • throw 关键字
    • throws 关键字
  • 声明异常类
  • 通用异常

执行过程中发生的异常事件分为两大类:

  1. Error(错误):Java虚拟机无法解决的严重问题。
  2. Exception:其它因编程错误或偶然的外在原因导致一般性问题,可以使用针对的代码进行处理。Exception分为两大类:运行时异常,和编译时异常。

异常体系图

在这里插入图片描述

  1. 异常分为两大类,运行时异常和编译时异常.
  2. 运行时异常,编译器不要求强制处置的异常。一般是指编程时的逻辑错误,是程序员应该避免其出现的异常。java.lang.RuntimeException类及它的子类都是运行时异常。
  3. 对于运行时异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响
  4. 编译时异常,是编译器要求必须处置的异常。

常见运行时异常

1.NullPointerException空指针异常:

String str = null;
System.out.println(str.length());

2.ArithmeticExceptiom数字运算异常:

分母为0

3.ArrayIndexOutOfBoundsException:数组下标越界异常

int[] arr = {1,2,3};
for (int i = 0; i <= arr.length; i++) {System.out.println(arr[i]);
}

4.ClassCastException类型转换异常:

当试图将对象强制转换为不是实例的子类时,抛出该异常。

5.NumberFormatException:

当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常=>使用异常我们可以确保输入是满足条件数字。

异常处理方式try-catch-finall

捕获异常:

try
{// 程序代码
}catch(ExceptionName e1)
{//Catch 块
}

多重捕获块:快捷键 ctrl+alt+t

try{// 程序代码
}catch(异常类型1 异常的变量名1){// 程序代码
}catch(异常类型2 异常的变量名2){// 程序代码
}catch(异常类型3 异常的变量名3){// 程序代码
}finally{   
//1.finally 关键字用来创建在 try 代码块后面执行的代码块。
//2.无论是否发生异常,finally 代码块中的代码总会被执行。
//3.在 finally 代码块中,可以运行清理类型等收尾善后性质的语句。
}
  1. 如果异常发生了,则异常发生后面的代码不会执行,直接进入到catch块
  2. 如果异常没有发生,则顺序执行try的代码块,不会进入到catch
  3. 如果希望不管是否发生异常,都执行某段代码(比如关闭连接,释放资源等)则使用如下代码- finally

throws/throw 关键字

throwthrows 关键字是用于处理异常的。

throw 关键字用于在代码中抛出异常,而 throws 关键字用于在方法声明中指定可能会抛出的异常类型。

throw 关键字

用于在当前方法中抛出一个异常。

通常情况下,当代码执行到某个条件下无法继续正常执行时,可以使用 throw 关键字抛出异常,以告知调用者当前代码的执行状态。

例如,下面的代码中,在方法中判断 num 是否小于 0,如果是,则抛出一个 IllegalArgumentException 异常。

public void checkNumber(int num) {if (num < 0) {throw new IllegalArgumentException("Number must be positive");}
}

throws 关键字

处理机制图:try-catch-finally和throws二选一

在这里插入图片描述

用于在方法声明中指定该方法可能抛出的异常。当方法内部抛出指定类型的异常时,该异常会被传递给调用该方法的代码,并在该代码中处理异常。

例如,下面的代码中,当 readFile 方法内部发生 IOException 异常时,会将该异常传递给调用该方法的代码。在调用该方法的代码中,必须捕获或声明处理 IOException 异常。

public void readFile(String filePath) throws IOException {BufferedReader reader = new BufferedReader(new FileReader(filePath));String line = reader.readLine();while (line != null) {System.out.println(line);line = reader.readLine();}reader.close();
}

声明异常类

编写自己的异常类时需要记住下面的几点。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。
class MyException extends Exception{
}

通用异常

在Java中定义了两种类型的异常和错误。

  • **JVM(Java虚拟机) **异常:由 JVM 抛出的异常或错误。例如:NullPointerException 类,ArrayIndexOutOfBoundsException 类,ClassCastException 类。
  • **程序级异常:**由程序或者API程序抛出的异常。例如 IllegalArgumentException 类,IllegalStateException 类。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词