异常
来源:互联网 发布:科密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不会执行