异常的学习

 

 

异常(exception):就是程序在运行时出现的不正常情况。                    异常的由来:问题是现实生活中一个具体事物,也可以通过Java以类的形式进行描述,并封装成对象。

                                |      严重的:java通过ERROR类描述---------此时一般不处理     |

对于问题的划分:|                                                                                                              | ----------> 向上抽取得到 类:Throwable

                               |   非严重的:java通过exception 类描述,-----进行针对性处理  |

 

 在异常的Throwable 体系中,所以的类以及建立 的对象都具备可抛性,也就是可被 throw  和 throws 关键字操作,也只有异常体系有这个特点。

 

对于 throw  和  throws 的用法:throws 使用在函数上,其后跟的异常类,可以跟多个,用逗号隔开。

                                                        throw 使用在函数内,其后跟的是异常对象。

 

 

自定义异常:如果此时的异常发生时,可以不再进行运算,不作处理,就让该异常继承RuntimeException();(运行时异常)。  所以自定义的异常有两种类可以继承:Exception()  和  RuntimeException()。

 当函数内抛出的异常属于RuntimeException()类及其子类的对象的时候,在函数上就不用再申明了。

 

对异常的处理:try

                             {有可能抛出异常的代码}

                            cathc(异常类变量)

                                {处理方法 }                          如果try{}中没有抛出异常,则catch(){}就不执行。 对方申明了几个异常,就对应有几个catch(){}块, 如果多个catch块中的异常类存在着继承关系,那么包含父类的catch 块放在下面。

 

当然获取异常之后,如果不能处理,则也能抛出。在抛出时要注意,如果接到AException ,不能处理,但也不属于该功能的,则可以抛出另个BException异常。

 

 

 

如何定义异常信息?

    因为父类已经将异常信息的操作都完成了,所以子类只要在构造时,将异常信息传递给父类通过super()语句。 那么就可以直接通过   MyException.getName()的方法获取自定义的异常信息。

class MyException extends Exception

{

   MyException (String meg)

{                                                    ---------------------------->     在之后 的函数中抛出MyException 异常的对象: throw  new MyException("   自定义的异常信息");

     super(meg );                                                                

}

}

 

知识点:catch 块用于处理异常,如果没有catch 块就代表没有异常被处理

 

 

异常处理语句:1、try { }        catch()  {         }   finally  {      }    2、 try { }        catch()  {         }  3、try { }        finally  {      }

  其finally{  } 中的是一定会执行的代码。

重要作用:不管是否有异常,还是有异常之后能否正确处理,对于占用资源的程序来说,最后都要关闭资源。  那么发生异常,程序中断时,就要用这个语句来关闭资源了。

只有一种情况下,finally{}中语句不执行::当finally前有:“System.exit(0);”时,此语句是系统退出语句,JVM结束。

 

异常的好处: 1、 将问题封装 2、 将正常运行的代码和处理问题的代码分离,方便阅读

 

 

异常在子父类覆盖时的注意事项:1、如果父类方法抛出异常,那么子类的覆盖方法只能抛出该父类的异常或异常的子类,或不抛。

                                                              2、如果父类方法抛出多个异常,那么子类方法只能抛出这些异常的子集

                                                        3,父类或接口的方法中没有抛出异常,那么子类也不可以抛, 如果子类中发生异常,那么必须try{} 处理,绝不能抛出。 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值