异常

1.异常有两种分法 :

        1) 按照程度来分

                1) Error

                2) Exception

        2) 按照处理来分

                1) 受检异常 在程序中必须对其进行检查处理的异常

                         Exception及其子类 (RuntimeException及其子类除外)

                2) 非受检异常 在程序中不是必须对其进行检查处理的异常

                         Error及其子类 过于严重

                         RuntimeException及其子类 过于轻微

 

2.异常的处理 :

       1) 捕获, 在可能抛出异常的语句上捕获.

                try {

                         可能出异常的语句

                } catch (可能的异常类型 异常对象) {

                         处理异常(打印异常信息)

                } catch (可能的异常类型2 异常对象) {

                         处理异常(打印异常信息)

                } catch (Exception e) {

                            通用的捕获(打印异常信息)

                } finally {

                         此处代码一定要执行,不论前面有没有return

                }

                         有三种组合 : try catch , try catch finally, try finally

         打印异常信息常用的方法有三种:

         ① e.printStackTrace();

         ② System.out.println(e.getMessage());

         ③ System.out.println(e);

         这里有一点需要注意,finally{}代码块中的代码是一定要执行的,即使前面有return语句,也会先执行finally{}代码块中的语句,再返回去执行return。正是由于finally的这种特性,一般在finally中写关闭资源的代码。

        

       2) 抛出 , 方法声明中使用throws 可能的异常类型. 在方法中如果真的要抛出异常,使用throw 异常对象!

       3) 捕获后再抛出, 方法中先尝试执行代码, 如果捕获到了异常, 把异常包装成自定义异常, 再抛出, 这样抛出的异常永远可以保持类型的一致性

      

3.throws 与throw的区别:

         throws只是声明可能会抛出异常,并不一定抛出异常,它是声明在方法签名上的,并且可以声明多个异常。在继承时子类抛出异常的范围要比父类的小。

         public void r() throws Exception1,Exception2{

         }

         throw 写在方法中,构成语句,的是真的抛出异常对象,这个异常对象一般是自定义异常。

         throw new MyException("自定义异常!");

 

4.自定义异常

         public class MyException extends Exception(){

        

                   public MyException(String message){

                            super(message);

                   }

        

                   public MyException(Exception e){

                            super(e);

                   }

        

         }

 

         由上面代码可以看出,写自定义异常时,通常会继承父类Exception,然后编写本异常类带参构造器,在带参构造器中调用父类的带参构造器。

5.异常处理还可以分成两种:

         积极的:try...catch...finally

         消极的:throws

         throw关键字,是属于手动抛出异常对象。

        

6.异常处理的选择 :

       底层方法要尽量抛出。

       顶层方法要尽量捕获 , 入口方法。

 

 

                                                                                                                            by Karl

转载于:https://my.oschina.net/karl0/blog/761430

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值