从零双排java之异常
Throwable(所有异常的父类)
* 异常的分类
* 1.运行时异常(程序员犯得错误 代码写错了 比如说越界)
* 2.编译时异常(除了运行时异常 全是编译时异常)
* 为你可能发生的异常 进行一个准备
* 特点:系统强制你去处理这个异常 不处理就报错
出现异常时有两种处理方式:
1.自己处理
* 如何处理异常
* try.....catch....finally
扫描二维码关注公众号,回复:
1118122 查看本文章
* try 指的是 要被测试的代码(有可能出现异常的代码)
* catch 指的是 要捕获的异常
* finally 指的是 异常处理的要执行的代码
*
* 多catch处理异常
* 由上至下进行匹配 匹配上一个剩下的catch都不走了
* 捕获时 使用的类有小到大 书写
代码示例:
TestException testException = new TestException(); try { //放可能要发生异常的代码 //返回ArithmeticException对象 int num = testException.fun(10, 0); System.out.println(num); }catch (ArithmeticException e) { //TestException testException = new TestException(); ///捕获异常对象(匹配这个异常对象) //如果捕获成功 会执行catch中的代码 //程序不会被终止 System.out.println("你除了零"); }catch(IndexOutOfBoundsException e) { System.out.println("数组越界了"); }catch(Exception e) { System.out.println("Exception异常"); } System.out.println("你猜我执行了吗?");
* finally(遗言)
* finally中的代码一定会被执行
* finally一般关闭资源 关闭数据库 关闭流
* finally final finalize 之间的区别
* 三者之前没有关系
* final 修饰类 方法 变量
* finally 异常处理中的关键字 可以关闭资源 一定会被执行
* finalize是object 类中的方法是 用来垃圾回收的
* 可以将内存中没有任何引用的垃圾空间回收 并且是系统调用
*/
try { int num = 10 /2; return; } catch (ArithmeticException e) { System.out.println("你除了零"); }finally { System.out.println("我是finally中的语句"); }
2.向上级抛出
当一个方法中出现异常时,可以向上级抛出这个异常.谁调用了这个方法就由谁来处理.
当异常在main函数中被抛出时:将由Jvm虚拟机来处理
* JVM默认处理异常方式
* 1.打印错误所在的位置
* 2.打印错误信息 /by zero
* 3.停止你的程序
继承中的异常
class Father{ //如果父类抛出了异常 子类也可以抛出异常 也可以try\--catch处理 public void fun() { } } class Son extends Father{ //重写父类的方法 @Override public void fun(){ //调用带异常的方法 能不能把异常抛出去处理 //这时只能用try--catch处理 try { //当父类中的方法没有抛出异常 那么子类在重写父类的这个方法的时候也不能抛出异常 method(); } catch (Exception e) { } } //抛出异常的方法 public void method() throws Exception{ throw new Exception(); } }