1.Throwable类方法
(1)public String getMessage()
返回发生的异常的详细信息
(2)public Throwable getCause()
返回一个Throwable对象代表异常原因
(3)public String toString()
返回此Throwable的简短描述
(4)public void printStackTrace()
将此Throwable及其回溯打印到标准错误流
(5)public StackTraceElement[] getStackTrace()
返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。
(6)public Throwable fillInStackTrace()
用当前的调用栈层次填充Throwable对象栈层次,添加到栈层次任何先前信息中
2.捕获异常
使用try和catch关键字可以捕获异常。try/catch代码放在异常可能发生的地方:
try{程序代码}catch(ExceptionName e){//catch块}
catch语句包含要捕获的声明。当保护代码块中发生一个异常时,try后面的catch就会被检查。如果发生的异常包含在catch块中,异常会被传递到该catch块,这和传递一个参数到方法是一样的。
一个try代码块后面跟随多个catch代码块的情况叫多重捕获:
try{//程序代码}
catch(异常类型1 异常变量名1){//程序代码}
catch(异常类型2 异常变量名2){//程序代码}
可以在try后面添加任意数量的catch块。如果保护代码中发生异常,异常被抛给第一个catch语句块,如果异常数据类型与ExceptionType1匹配,它在这里就会被捕获。如果不匹配,它会被传递给第二个catch语句块。如此,知道异常被捕获或者通过所有catch语句块。
3.throw关键字
throw关键字用于在当前抛出一个异常。通常情况下,当代码执行到某个条件下无法继续正常执行时,可以使用throw关键字抛出异常,以告知调用者当前代码的执行状态。
4.throws关键字
throws用于在方法声明中指定该方法可能抛出的异常。当方法内部抛出指定类型的异常时,该异常会被传递给调用该方法的代码,并在该代码中处理异常。
5.finally关键字
finally关键字用来创建在try代码块后面执行的代码块。无论是否发生异常,finally代码块中的代码总会被执行。在finally代码块中,可以运行清理类型等收尾善后的语句。finally代码块出现在catch代码块后面:
try{//程序语句}
catch(可能出现的异常类型 异常变量名){//程序语句}
finally{//程序语句}
⚠️
·catch语句不能独立于try存在
·try/catch后面不一定要加finally语句
·try代码语句后面不能既没有catch语句又没有finally语句
·try/finally/catch之间不能添加任何代码块
6.try-with-resources
语句执行完毕后确保每个资源都被自动关闭。
try-with-resources是一种异常处理机制,它可以简化资源管理代码的编写
语法:
try(resources declaration){//程序语句}
catch(ExceptionType el){//异常块}
⚠️
·java中可以自定义异常
·所有异常都必须是Throwable的子类
·希望写一个检查性异常类,则需要Exception类
·想写一个运行时异常,需要继承RuntimeException类
class MyException extends Exception{}