java中的异常
1.java异常的概念
异常即是程序运行过程中产生的错误,java中的异常类继承关系如下:
Error:程序运行过程中出现的内部系统错误,一旦出现这种错误只能通知用户出现此种错误,无法对此种错误进行处理
RuntimeException:访问空指针,数组越界访问等。出现此种错误肯定是你的问题,出现此种问题是因为你在程序中未进行相应检查来避免异常。
其他异常:试图打开一个不存在的的文件,试图在文件尾部读取数据。
Java中的异常可以分为以下两种类型:
(1)未检查异常:RuntimeException,Error
(2)已检查异常:其他异常
java中的异常处理机制主要是处理程序过程中出现的已检查异常。
2.异常基类
Throwable
{
Throwable(){}
Throwable(String message){}
String getMessage(){}
}
Throwable是异常的基类,Throwable基类有两个构造函数默认无参构造函数和一个带string参数的构造函数。但是在自定义自己的异常类的时候,一般都是继承Exception类,一般都是加上这两个构造函数。Throwable类里面还有一个getMessage()方法,这个方法可以获得异常的相关信息。
3.java中异常的使用
(1)异常的声明
void Fun()throws Exception
{
}
此种语法表示声明此方法将抛出一个异常,在此方法中便可以处理或者抛出该异常及其子类异常,一个方法中应该尽量声明该方法中会出现的已检查异常。
(2)异常的抛出
void Fun() throws Exception
{
throw new Exception();
}
抛出异常时需抛出异常的实例
(3)异常的捕捉
void Fun() throws Exception
{
try{
throw new Exception();
}
catch(IOException e){
}
catch(Exception e){
}
finally{
}
}
使用try catch语句对异常进行进行捕捉,这两个关键字必须成对出现,try中抛出异常,catch中才能进行对捕捉到的异常进行处理。try抛出异常后,将不再执行抛出异常后面的语句,转到catch块中去执行catch中的语句。
如果在程序中使用了某种资源,但是程序在运行过程中出现了错误。这时需要释放资源的话,就需要使用finally语句。在程序出现错误后,程序进入到catch语句中执行,然后便会去到finally语句中执行,便可以在finally中释放资源。无论程序中是否出现错误,都会在执行完try和catch中语句后执行finally中的语句。
一个try可以有多个catch语句,try语句中产生的错误的信息对于catch里面的错误类型进行匹配,匹配到最佳的错误然后进入到这个catch语句块中执行相关的语句。
在有些时候我们需要在try语句中使用资源,在finally语句块中释放在try语句块中使用的资源。但是有时候当资源使用出错时,finally释放资源也有可能出错,这时候就需要在外层在嵌套一个try,catch语句去捕获释放资源的异常。这样子实现起来非常麻烦。此时就可以采用try(){}语句,在()里面创建需要释放的资源。之后如果在操作过程中出现了异常,便会抛出这个异常,进行资源关闭释放操作,而当资源关闭释放出现异常时,此时便会抑制这个异常,将异常使用addSuppressed方法添加到一个资源释放异常列表中,不再进行抛出。可以使用getSuppressed方法获取列表中的异常。