• Java基础学习之(11)--异常处理


    一、异常的概念:

    二、异常的分类:

    所有的Error和Exception都继承自throwable类,throwable类是万恶之源。

    Error类是系统的内部错误,即虚拟机出错;Exception类是我们可以处理的异常,可以被catch,Exception类主要分为两大类,RuntimeExcetion类和其他。RuntimeExcetion异常可以捕获,也可以不捕获,经常出现;另一类异常必须被捕获,处理了才能继续运行。

     举例1:可以不捕获的异常

    void m(int i)  throw ArithmeticException {

    if( i == 0)

      throw new ArithmeticException("被除数为0");

    }

    (1)不捕获异常的情况

    TestEx te = new TestEx();

    te.m(0);

    (2)捕获异常的情况

    try{   new TestEx().m(0);  }

    catch( ArithmeticException ae ){

    ae.printStackTrace();

    System.out.println("出错了");

    }

     举例2:必须捕获的异常

     in = new FileInputStream("myfile.txt");编译会报错:必须对其进行捕捉或声明以便抛出异常。

    三、try_catch_finally关键字:

    一个try可以跟着多个catch。如果一个方法后面跟了throw Excetion(例如read()throw IOException),则使用该方法的时候,必须使用try-catch对该方法可能出现的异常进行捕获。

     

     不管是否捕获到异常,finally关键字中的内容,必须被执行。例如下图例子1中语句2不再执行,但是finally中的内容被执行。

     

     

     四、声明的方法抛出的异常(throws)

    当前方法若是对于异常无法处理,则可以向上级抛出该异常throws,让上级去处理该异常。

    例如 void f() throws FileNotFoundException , IOException{}//虽然FileNotFoundException是IOException的子类,但是最好都写,分别进行处理

    当catch到任何一种异常的时候,至少应该做出一种处理,打印出错误也行,不然异常会被吞噬掉。

     五、总结

    一个图;五个关键字(throw try_catch_finally throws);

    先逮小的异常,再逮大的异常(FileNotFoundException , IOException)

     重写的方法不能抛出与被重写的方法不同的异常.若是被重写方法没有抛出异常throws,则重写方法也不能抛出异常.

    若try后面跟着多个catch,用于捕获不同的异常,但是不管是哪一种情况,最终只会输出其中之一。

    博客引用马士兵Java基础教程中的PPT,如有侵权,请联系删除,谢谢!

  • 相关阅读:
    P2525 Uim的情人节礼物·其之壱
    prev_permutation()
    P1634 禽兽的传染病
    P1615 西游记公司
    P1888 三角函数
    __gcd()函数
    P4325
    unique函数
    vscode C++开发环境配置教程(教你如何用vscode写C++)
    codeforces-C. News Distribution-2019.5.15
  • 原文地址:https://www.cnblogs.com/Harriett-Lin/p/12652277.html
Copyright © 2020-2023  润新知