day09_面向对象_异常

2018-11-14  本文已影响0人  简单的书写点

处理异常的两种方式:
try...catch....finally

throw //抛出
try{
可能出现问题的代码;
}catch(异常名 变量){
针对问题的处理;
} finally{
释放资源;
}

变形格式:
try{
可能出现问题的地方
}catch(异常名 变量){
针对问题的处理
}

注意:

    **异常名可以先运行一次,让虚拟机报错借此告诉你这个异常叫什么**
    A:try 里面的代码越少越好
    B:catch里面必须有内容,哪怕只是一个提示

A:当一个异常的时候
B:当两个异常的时候:每个异常都try...catch
try...catch....catch
注意:一旦try里面出现问题,就会在这里把问题抛出并和catch里面的问题匹配,有匹配就执行catch里面的语句,然后结束try...catch,继续执行下去。(try里面,出问题的语句之后的语句都不再执行)


throw的方式处理异常

有些时候,我们是可以对异常进行处理的,但是又有些时候,我们根本就没有权限区处理某个异常。
或者说,我处理不了,就不处理了
为了解决问题,Java针对这种情况,就提供了另一种方法:抛出

注意:尽量不要再main方法上抛出异常
如果出现了异常情况,我们可以把异常抛出,抛出的应该是异常的对象
例如 throw new ArithmeticException();

原则:

如果该功能内部可以将问题处理,用try,如果处理不了,交由调用者处理,这是用throw
区别:
后续程序需要运行,就用try,否则就用throw


finally特点

finally:被finally控制的语句一定会执行
注意:如果在执行到finally之前jvm退出了,,finally就不能执行了,如System.exit();

自定义异常

自定义的异常,是为了弥补java中考虑不到的异常,我们需要自定义异常
我们的自定义异常,必须用如下两个方式其中之一
A:继承Exception
B:继承RuntimeException
例如:
我现在要自定义一个异常,我输入的数字必须在0-100之前,否则报错

public class MyException extends Exception{
  public MyException(){}           //空参构造器
  public MyException(){           //带参构造器,参数是错误的具体信息
    super(message);
  }
}

当我调用测试类的时候,判断输入值是否在范围之内,如果超出范围,则执行:throw new MyException("超出设定范围"); //这个参数就是错误详细说明
throw抛出的是异常的对象

上一篇下一篇

猜你喜欢

热点阅读