目标黑马,我的自学之路:第五章 异常

来源:互联网 发布:ipython mac 编辑:程序博客网 时间:2024/04/29 13:57

        异常就是程序运行时出现的不正常情况,异常也是现实生活中的一个具体事物,也可以通过java类的形式进行描述,并封装成对象,其实就是java对不正常情况进行描述的对象体现。对于问题的划分有两种,一种是严重问题,通过Error进行描述,不需要编写针对性的代码进行处理,另一种是非严重问题,通过Exception进行描述,需要编写针对性的代码进行处理,因为他们都具有一些共性的内容,比如不正常情况的信息,引发原因等,我们通过向上抽取,从而得到所有不正常情况的超类Throwable,这就是我们了解的异常体系。

        异常体系有自己的异常处理机制,既try{}catch(){}finally{}语句,try中是需要被检测的代码,catch中是异常处理代码,finally中是一定会被执行的代码,通常用于关闭资源。由此可见异常的好处是将问题进行封装,将正常的流程代码与异常处理代码相分离,便于阅读。

异常的常见操作有getMessage()获取异常的信息,toString()获取异常的名称和异常信息,printStacktrace()打印异常名称、异常信息以及异常出现的位置,JVM默认的异常处理机制就是在调用该方法。

        异常的处理方式有两种,要么try,要么throw, 当调用到抛出异常的功能时,抛出几个就处理几个,但要注意的是父类的异常要放在最下面,否则会掩盖发生的异常的具体信息。

       异常分为两种,一种是编译是被检测的异常,这种异常需要被处理,如果不处理,编译失败,该异常是可以被处理的异常,另一种是编译时不被检测的异常,是运行时异常,Exception中有一种特殊的子类RuntimeException,运行时如果发生该异常,函数上可以不声明,编译一样通过,如果函数上声明了,也不需要进行处理,因为这需要让调用者处理,当该异常发生时,希望程序停止,因为出现了程序无法继续运算的情况,希望停止程序后对代码进行修正。

       在我们实际编程中,会发生一些特有的问题,而这些并没有被java所描述并封装成对象,,所以这些特有问题可以按照java对问题封装的思想进行自定义的异常封装,自定义异常需要继承Exception或者RuntimeException,目的是让该类具备可抛性,同时具备操作异常的共性方法,这些在throwable类中都已经定义好了,只需要将异常信息传递给父类的构造函数即可.         

      异常的注意事项:在子父类覆盖时,子类只能抛出父类的异常或者父类异常的子类异常,如果父类或者接口没有异常抛出时,那么子类覆盖后出现异常,只能try。

 

0 0
原创粉丝点击