在编译时发生的异常, 它们也称为编译时异常。在编译时不能简单地忽略这些异常, 程序员应该处理这些异常。例如, 如果在程序中使用 FileReader 类读取文件中的数据, 如果在其构造函数中指定的文件不存在, 则会发生则抛出, 编译器会提示程序员处理异常。
在执行时发生的异常。这些也称为运行时异常。其中包括编程 bug, 如逻辑错误或 API 使用不当。编译时忽略运行时异常。
捕获异常方法使用 try 和 catch 关键字的组合捕捉异常。try/catch块放置在可能生成异常的代码周围。try/catch块中的代码称为受保护的代码, 使用 try/catch的语法如下所示try { // Protected code} catch (ExceptionName e1) { // Catch block}容易出现异常的代码放在 try 块中。发生异常时, 发生的异常由与之关联的 catch 块处理。每个 try 块都应紧跟着一个 catch 块或一个Finally块后面。catch 语句包括声明要捕获的异常类型。如果在受保护的代码中发生异常, 则会选中 try 后面的 catch 块 (或块)。如果 catch 块中列出了发生的异常类型, 则会将异常传递给 catch 块, 就像将参数传递给方法参数一样。
一个Finally块跟随一个 try 块或一个 catch 块。 无论是否发生异常,Finally块始终执行。Finally块出现在 catch 块的末尾, 语法是:try { // Protected code} catch (ExceptionType1 e1) { // Catch block} catch (ExceptionType2 e2) { // Catch block} catch (ExceptionType3 e3) { // Catch block}finally { // The finally block always executes.}