上篇文章介绍了 Java 中的异常,这里我们来总结下几个关键字的用法
try
- try 关键字用于包含可能引发异常的语句块
- 每个 try 块都必须至少有一个 catch 或 finally 子句
- try 中可包含可能出错的几个语句
- 如果某个特定异常类未被任何 catch 子句处理,该异常将沿着调用栈递归地传播到下一个封闭 try 块
- 如果执行到 main 还未捕获到异常,交由 JVM 处理,程序退出
catch
- catch 关键字用来在 try-catch 或 try-catch-finally 语句中捕获异常,对异常进行处理
- catch 可对几个异常进行处理
finally
- 无论是否抛出异常,都会执行到 finally 代码块,包含异常,捕获异常后,执行 finally 代码块,不出现异常,跳过 try 代码块,直接执行 finally 代码块
- 如果 catch 代码块中有 return 语句,先捕获异常,再执行 finally 代码块,最后再执行 catch 中的 return 语句
- finally 执行的时机是在方法返回之前(try 或者 catch 中如果有 return 会在这个 return 之前执行finally),但是如果 finally 中也存在 return 语句, 那么就会执行 finally 中的 return, 从而不会执行到 try 中原有的 return
- 一般不建议在 finally 中写 return 语句
throw
- throw 关键字用于引发异常
- throw 语句将 java.lang.Throwable 作为参数,Throwable 在调用栈中向上传播,直到被适当的 catch块捕获
- 引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常
throws
- throws 关键字可以应用于方法,以便指出方法引发了特定类型的异常
- throws 关键字将逗号分隔的 java.lang.Throwables 列表作为参数
- 引发非 RuntimeException 异常的任何方法还必须在方法声明中使用 throws 修饰符来声明它引发的异常
- 要在 try-catch 块中包含带 throws 子句的方法的调用,必须提供该方法的调用者