使用try catch,哪些异常无法被捕获?如何处理这些未捕获异常?

3 min read

try catch块能够捕获并处理程序中的大部分异常。但是,try catch块无法捕获以下几种类型的异常:

  1. StackOverflowError: 当堆栈溢出时,程序就崩溃了,无法执行catch块中的代码。
  2. VirtualMachineError: 当虚拟机遇到内部错误时,如Fatal Error,OutOfMemoryError等,程序就崩溃了,无法执行catch块中的代码。
  3. Error: Error是Throwable的子类,表示程序内部出现了一个严重的问题,,无法执行catch块中的代码。

要捕获这些异常,可以使用以下方法:

  1. 避免递归调用而导致的StackOverflowError,可以在递归的时候加上循环终止条件。
  2. 尽量避免虚拟机出现错误,可以使用最新的JDK和垃圾收集器。
  3. 对于Error类型的异常,应该记录日志并尝试恢复程序。