Java异常族谱、运行时异常、非运行时异常、ERROR

try-catch-finally、throws、throw、异常概述

概览

在 Exception 异常中,大致又分为checked Exception(非运行时异常、受检异常)和 unchecked Exception(运行时异常、非受检异常)

受检异常

在程序编译阶段就要被检查出来并处理掉的(try~catch 或者在方法外面 throws),否则程序无法通过编译,比如 ClassNotFound、FileNotFoundException。

非受检异常

可以通过编译,但是会在程序运行过程中爆露出来,比如常见的空指针、参数错误、类型转换错误 。

try-catch-finally

  • try块:用于捕获异常。其后可接零个或多个 catch 块,如果没有 catch 块,则必须跟一个 finally 块。
  • catch块:用于处理 try 捕获到的异常。
  • finally 块:无论是否捕获或处理异常,finally 块里的语句都会被执行。当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法 return 之前被执行。
  • finally 的代码在某些情况下也不是必须执行的,比如 JVM 终止、线程死亡。

throws 和 throw

  • throws:用于在方法声明中声明可能抛出的异常类型。如果一个方法可能抛出异常,但不想在方法内部进行处理,可以使用 throws 关键字将异常传递(上抛)给调用者来处理,直至被 catch 或者抛给前端用户。
  • throw:手动抛出异常。可以根据需要在代码中使用 throw 语句主动抛出特定类型的异常比如自定义异常。
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计