您的位置:首页 > 编程语言 > Java开发

Java学习总结之异常处理

2013-09-14 17:11 711 查看
一开始学习时觉得异常处理这个词好高端,应该是到很高级的程序猿,需要处理很底层的异常状况时才会用到,但是学习之后,特别是开始写项目之后发现异常处理几乎是程序中用的最多的语句了。

在介绍用法之前先介绍一下异常的体系结构。

java中的异常都在 java.lang.Throwable 这个类之下,Throwable 类包括两个子类,Error 类和 Exception 类,Error 类属于不可恢复的错误,Exception 则是有可能恢复的错误,需要我们进行异常处理的就是这个Exception。Exception有很多子类,其中有一个RuntimeException ,这一项不强制要求处理,其他的 Exception 则要求程序员必须进行处理。

下面来说一下异常处理的用法,java API 中的许多方法声明都带有 throws Exception 语句,像这样的方法使用的时候就必须放在 try 后面的大括号 { }  中,大括号后面跟 catch 关键字,参数为 try 中的语句可能 throws 的异常,然后跟大括号 { } ,如果 catch 到 try 中的语句 throws 的 Exception 则执行 catch 之后大括号里的内容,也就是在这里对异常进行处理,之后可跟继续跟catch,再之后是 finally 关键字和大括号 {
} ,括号中是不论是否 catch 到 Exception 都执行的语句。这里需要说明的是,如果 catch 到了 try 中 throws 的 Exception ,程序会直接执行 catch 后面大阔号中的内容,而且执行完不会再回到之前程序的断点,而是继续向下执行。也就是下面这样

tyr {

            //这里写有可能抛出异常的语句

} catch (//这里写有可能被捕捉的异常){

           //捕捉到try中抛出异常时,直接跳到此处

          //这里写捕捉到异常,进行的异常处理,调试时大多用 e.printStackTrace() ;

} catch (//这里不能写上面的异常或其子类) {

          //当捕捉到这种异常时进行的处理

} finally {

          //这里的内容无论是否抛出异常都会执行,一般是用来写关闭连接等回收资源的语句

}

 

以上是使用API 时会 throws Exception 并且进行处理的情况,如果不想这么麻烦,也可以在包含可能抛出异常的语句的方法声明上加上 throws Exception ,这样将直接把异常抛出给方法调用者,而自己不进行处理。

在这里总结一下异常处理的几种方法:①不捕获,直接在方法中声明,此方法会抛出异常;②捕获异常,但是在处理时重新抛出;③捕获异常,但不进行任何处理,也就是说catch 后面的大括号中为空;④捕获异常并进行处理

在第二项中有捕获异常并重新抛出,那么我们怎么抛出异常呢,还有如果想自己定义异常怎么办呢?

抛出异常的语句是 throw new XXXException,XXXException 可以是系统定义的 Exception 也可以是自定义的。具体如下:

public void  x() throws XXXException {

         if(//这里写抛出异常的情况)  throw  new XXXException();

}

若是自定义异常,那么需要自行定义一个异常类,该类可以继承Throwable 或者 Exception 或者 Exception 的某个子类。然后在构造方法中调用父类的构造方法。

当继承的父类成员方法有 throws Exception 的话,那么子类重写父类方法的时候可以①不抛出异常;②抛部分异常;③抛父类异常的子类异常;但是绝不能抛父类中没有抛出的异常。

最后需要强调的是,不应将异常用于正常的业务逻辑处理。因为异常会占用系统资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 异常处理