异常的继承图
从继承图中可以看出来 Exception
是 Throwable
的继承类
异常的分类
Throwable
分为 Error
和 Exception
- Error:
OutOfMemoryError
,StackOverFlowError
等 - Exception:
RuntimeException
(UnCheckedException 运行时异常)和CheckedException
(受检异常) -
- RuntimeException:
NullPointerException
,IndexOutOfBroudsException
等,一般由程序的逻辑代码产生,一般不抛出或者显示的声明这种异常,而是尽力去减少这种异常的产生,可以避免.
- RuntimeException:
-
- CheckedException:代码中需要显示处理的异常,不处理这种异常的话编译会出错,如
SQLException
,IOException
,ClassNotFoundException
- CheckedException:代码中需要显示处理的异常,不处理这种异常的话编译会出错,如
Exception 和 Error 的区别
Exception
是程序本身可以处理的异常
Error
(致命)是程序无法处理,表示出现了不可控的错误,有 Java 的虚拟机产生和抛出,不可控,在编译的时候检查不到 Error 的存在
异常的处理
try-catch-finally
finally 是在 return 语句后执行的,是为了做后续工作,例如释放连接,关闭流,因为 finally 代码块无论如何都要执行,所以不要在 finally 中使用 return 语句
catch 的时候从上往下异常类逐渐变大,从子类异常到父类异常,如果有匹配的 catch,它就会忽略掉这个 catch 后面所有的 catch.
throw
抛出一个异常,动词
throw new Exception()
表示抛出一个异常
throws
声明一个方法可能抛出的异常,是一种示意
public void f() throws oneException
表示在调用 f 这个方法的时候可能会抛出异常,由调用该方法的程序处理这个异常
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于