黑马程序员技术交流社区

标题: 异常处理学习笔记 [打印本页]

作者: 左岸那片海    时间: 2015-8-20 16:09
标题: 异常处理学习笔记
异常:
异常包括Error和Exception两大类,都继承与Throwable,它具有可抛性
注意事项:遇到异常时,要么抛出要么try{}catch(){}finaly{}
     如果抛出异常,调用的方法使用关键字Throws,并且每一层都要抛出异常
     如果try异常时,catch语句里最好不要写输出语句,实际开发时会形成日志记录
     *函数内部出现throw抛出异常时,要么抛出,要么try catch处理
     *一般情况下,函数内部出现异常,函数上需要声明
     *finally里面是一定执行的语句,一般用于关闭资源
自定义异常必须继承Exception

throws和throw的区别
throws使用在函数上,throw使用在函数内

throws后面跟的是异常类,可以跟多个,用逗号隔开
throw后跟的是异常对象

运行时异常:RuntimeException
如果在函数内抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过。
原因是运行时无法继续运算,希望对程序修正

无法运算的异常就继承于RuntimeException

异常在子父类覆盖中的体现:
1.子类覆盖父类有异常的方法时,只能抛出父类异常或者该异常的子类。
2.父类多个异常,子类只能抛出父类异常的子集
3.如果父类或接口的方法没有抛出异常,那么子类覆盖方法时不能抛出异常。
  如果子类方法发生了异常,就必须进行try处理,绝对不能抛。
  1. /*
  2. 需求:对于除数是负数的情况也视为异常
  3. */
  4. class FuShuException extends Execption{
  5.   private int num;
  6.   FuShuException(String msg,int num){
  7.       super(msg);
  8.       this.num = num;
  9.   }
  10.   public int getNum(){
  11.     return num;
  12.   }

  13. }

  14. class Demo{
  15.   int div(int a,int b) throws FuShuException{
  16.      if(b<0)
  17.         throw new FuShuException("出现了除数是负数的情况 / FuShu",b);
  18.      return a/b;
  19.   }
  20. }
  21. class ExceptionDemo{
  22.   public static void main(String[] args){
  23.      Demo d = new Demo();
  24.      try{
  25.      int x = d.div(4,-2);
  26.      System.out.println("x = "+x);
  27.      }catch(FuShuException e){
  28.          System.out.println(e.toString());
  29.          //System.out.println("除数是负数");
  30.          System.out.println("错误的负数是:"+e.getNum());
  31.      }
  32.   }

  33. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2