异常

来源:互联网 发布:科密x1考勤机导出数据 编辑:程序博客网 时间:2024/06/07 03:40

程序运行过程中出现的不正常现象

 错误:Error 异常:Exception: 运行时异常(可不处理)  编译时异常(必须处理)

异常的继承体系:

 任何一种异常都有一个类与它对应 运行时异常:            ArithmeticException:数学运算异常 1/0            NullPointerException:空指针异常 null 对空进行操作            InderOutBoundsException:数组下表越界异常(超出了下表范围)            ClassCastException:类型转换异常 Cat c=(Cat)dog     编译时异常:            IOException:IO异常      

异常的处理:

throw :(先做判断)真实的手动抛出异常。如果方法内部有异常抛出,则该方法必须做异常声明

       throw new Exception();       Throw new Exception(“  ”);

throws: 异常声明,声明该方法可能会发生异常

    一旦该方法发生了异常,系统会自动new 异常类(),向外抛出,    抛出了异常后,调用者必须对该异常进行处理。(1)try/catch处理(2)throws继续抛给其他调用者,main方法的异常抛给JVM,虚拟机终止程序。

try/catch():

      try{         //可能发生异常的代码(一旦有一行发生了异常那下面的都不执行了直接跳转到catch())      }catch( Exception e){             //处理异常             e.peinStackTrace();打印所有的异常信息}finally{     //不管异常会不会发生总会执行,实际工程中主要写释放资源的代码     }

注:throw 与throws的区别:

  throw:真实手动抛出异常  throws:只是声明方法有可能发生异常

父类无异常时 子类不可能抛出异常(使用throws) 如果子类有异常只能try/catch
父类有异常时 子类不可以抛出高于父类的异常

& finally
finally会在return;之前执行

 如果在catch()中有return;结束方法 finally仍会执行

Finally在有System.exit(0);时没机会执行

 如果在catch()中有System.exit(0);结束程序 finally不会执行