更多 Java 基础知识方面的文章,请参见文集《Java 基础知识》
Java Exception Class Diagram 类继承结构
-
Throwable
:The Throwable class is the superclass of all errors and exceptions in the Java language. -
Error
:系统级别,程序无法处理的错误。例如:OurOfMemeryError
ThreadDeath
-
StackOverflowError
不能迅速收敛的递归
-
Exception
,分为运行时异常和非运行时异常:-
RuntimeException
,在编译时不会检查运行时异常,因此不需要 try-catch。例如:NullPointerException
IndexOutOfBoundsException
ArithmeticException
ClassCastException
- 非运行时异常,在编译时会检查非运行时异常,因此需要 try-catch,否则编译不通过。例如:
IOException
SQLException
-
try-catch-finally
- try 不能单独出现
- try 后面可以跟 catch,不跟 finally
- try 后面可以跟 finally,不跟 catch
- try 后面可以同时跟 catch 和 finally
finally 的执行
- 在 try 或者 catch 代码块中调用 return,finally 代码块仍会执行,在 return 前执行
- 在 try 或者 catch 代码块中调用 System.exit(),finally 代码块不会执行
例如下面的代码:会返回false
。此时return true
是不可达语句,在编译阶段将优化去掉。
public static boolean decision() {
try {
return true;
} finally {
return false;
}
}
throw VS throws
-
throw 抛出异常
- throw e 跟的是一个对象
- 在方法内部
- 不能 throw 多个
-
throws 声明异常
- throws IOException 跟的是一个类
- 在方法签名中
- 可以 throws 多个