异常

来源:互联网 发布:巨人网络街篮客服 编辑:程序博客网 时间:2024/06/05 04:30

一、异常就是程序出现不正常的情况
二、异常的分类

  • Error 严重问题,我们不处理
  • RuntimeException 运行期异常,需要修正代码
  • 非RuntimeException 编译器异常,必须要处理,否则编译不通过

三、异常的处理

  1. JVM的默认处理
    • 把异常的名称,原因,位置等信息输出在控制台,但是程序不能继续执行了
  2. 自己处理
    • try…catch…finally
      自己编写处理代码,后面的程序可以继续执行
    • throws
      把自己处理不了的,在方法上声明,告诉调用者,这里有问题

四、异常中要了解的几个方法

  • public String getMessage(): 异常的消息字符串
  • public String toString(): 返回异常的简单消息描述
  • printStackTrace() 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。把信息输出在控制台。

五、JDK7出现的新异常处理方案

try{    }catch(异常名1 | 异常名2 | ...  变量 ) {        ...    }    注意:这个方法虽然简洁,但是也不够好。        A:处理方式是一致的。(实际开发中,好多时候可能就是针对同类型的问题,给出同一个处理)        B:多个异常间必须是平级关系。

六、finally

  • 被finally控制的与具体一定会执行
  • 如果在执行到finally之前jvm退出了,就不能执行了

七、自定义异常类

  • 子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。(父亲坏了,儿子不能比父亲更坏)
  • 如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
  • 如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws

八、注意事项

  • try里面的代码越少越好 ,catch里面必须有内容,哪怕是给出一个简单的提示。(要不无意义)
  • 异常用try的时候一定要注意初始化
  • 在try里面发现问题后,jvm会帮我们生成一个异常对象,然后把这个对象抛出,和catch里面的类进行匹配,如果该对象是某个类型的,就会执行该catch里面的处理信息,然后结束了try…catch继续执行后面的语句
  • 异常能明确的尽量明确,不要用大的来处理
  • 平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面

附:如果catch里面有return语句,请问finally里面的代码还会执行吗?如果会,请问是在return前,还是return后。
答: 会。前。

原创粉丝点击