JAVA 异常
java 异常类框架图
在JAVA中所有的异常都是 有一个共同的祖先 : Throwable类。在Java中只有 Throwable类以及其子类才能被程序捕获或者抛出!
Throwable 类又有两个重要的子类: Error(错误) 、 Exception(异常)其各自又都包括很多的子类。
1、什么是java Exception
**Exception : 是程序本身可以处理的,就是指你的程序在运行的时候可能会出现意外,所导致无法继续运行下去,那么就可以提前在可能出现意外的地方捕获异常。**比如:你的程序可能出现空指针, 或者忘记传入参数,参数类型不对,等等都是属于程序本身没有错,但是运行时候出现了意外。
Exception 分类
1、可检查异常
可检查异常就是在编译期间就会检查, 它就是那些必须显示捕获抛出的异常,比如关闭数据库链接、开启线程等等。
2、不检查异常
不检查异常,就是在编译期间不会被要求显示抛出的异常, 即在运行时候出错,可能出现:数组越界、除以0、空指针异常等。
2、什么是java Error
Error是指正常情况下,不大可能出现的情况,绝大部分的Error都会导致程序(比如JVM自身)处于非正常状态,不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如OutOfMemoryError之类,都是Error的子类。
3、有什么区别联系
异常和错误的区别:异常能被程序本身可以处理,错误是无法处理。
4、Throwable 类常用方法
public string getMessage():返回异常发生时的详细信息
public string toString():返回异常发生时的简要描述
public string getLocalizedMessage():返回异常对象的本地化信息。使
用 Throwable 的子类覆盖这个方法,可以声称本地化信息。如果子类没
有覆盖该方法,则该方法返回的信息与 getMessage()返回的结果相同
public void printStackTrace():在控制台上打印 Throwable 对象封装的
异常信息
5、异常处理总结
try 块:用于捕获异常。其后可接零个或多个 catch 块,如果没有 catch
块,则必须跟一个 finally 块。
catch 块:用于处理 try 捕获到的异常。 finally 块:无论是否捕获或处理异常,finally 块里的语句都会被执行。
当在 try 块或 catch 块中遇到 return 语句时,finally 语句块将在方法返回
之前被执行。
在以下 4 **种特殊情况下,**finally 块不会被执行:
-
在 finally 语句块中发生了异常。
-
在前面的代码中用了 System.exit()退出程序。
-
程序所在的线程死亡。
-
关闭 CPU。