try catch块能够捕获并处理程序中的大部分异常。但是,try catch块无法捕获以下几种类型的异常:
- StackOverflowError: 当堆栈溢出时,程序就崩溃了,无法执行catch块中的代码。
- VirtualMachineError: 当虚拟机遇到内部错误时,如Fatal Error,OutOfMemoryError等,程序就崩溃了,无法执行catch块中的代码。
- Error: Error是Throwable的子类,表示程序内部出现了一个严重的问题,,无法执行catch块中的代码。
要捕获这些异常,可以使用以下方法:
- 避免递归调用而导致的StackOverflowError,可以在递归的时候加上循环终止条件。
- 尽量避免虚拟机出现错误,可以使用最新的JDK和垃圾收集器。
- 对于Error类型的异常,应该记录日志并尝试恢复程序。