八、异常
在Java中,异常处理是一个重要的主题,因为它涉及到如何处理程序中的错误和异常情况。在日常工作中,正确地处理异常可以提供程序的健壮性和可维护性。以下是结合日常工作经验对Java异常处理的一些详细叙述:
1.基础概念
(1).分类
- 受检异常(Checked Exception):必须在编译时处理的异常,例如
IOException
。这些异常通常是由于外部因素引起的,如文件未找到、网络故障等。 - 非受检异常(Unchecked Exception):运行时异常和错误(
RuntimeException
和Error
),例如NullPointerException
、ArrayIndexOutOfBoundsException
。这些异常通常是编程错误引起的。
(2).层次结构
所有异常类都是
Throwable
类的子类。
Throwable
可以用来表示任何可以作为异常抛出的类,分为两种: Error 和 Exception。其中 Error 用来表示 JVM
无法处理的错误,Exception 分为两种:
-
受检异常 :需要用 try…catch… 语句捕获并进行处理,并且可以从异常中恢复;
-
非受检异常 :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。
-
Java Exception Interview Questions and Answers(opens new window)
2.处理语法
(1).try-catch
try {
//可能抛出异常的代码
} catch (SomeException e) {
// 处理异常的代码
}
(2).try-with-resources
//try-with-resources 语句
try (Resource res =