zoukankan      html  css  js  c++  java
  • 异常处理——毕向东Java基础教程学习笔记

    1.异常:就是程序运行过程中出现的不正常情况。

    异常的由来:问题本身也是日常生活中一个具体的事物,也可以通过java类的形式进行描述,并封装成对象。
                           其实,就是java对不正常情况描述的对象体现。
    对于问题的划分:一种是严重性问题,一种是非严重性问题。
     
    对于严重的,java用Error类进行描述。
    对于Error类一般不写针对型代码对其进行处理。
     
    对于非严重的,java通过Exception类进行描述。
    对于Exception类可以使用针对性处理方式进行处理。
     
    无论Error类还是Exception类都有一些共性内容,
    比如不正常情况的信息,引发原因等。
     
    Throwable
    --Error
    --Exception
     
     
    2.异常的处理
    java中提供了特有的语句进行处理:
    try
    { 需要被检测的代码;}
    catch(异常类名 变量)
    {处理方式; }
    finally
    {一定会执行语句; }
     
    3.对捕获到的异常对象进行常见方法操作。
     getMessage();获取异常的信息
    toString();异常名称:异常信息
    printStackTrace();打印异常在堆栈中的跟踪信息,包括异常名称,异常信息,异常出现的位置。
    其实JVM默认的异常处理方式就是调用printStackTrace()。
     
    在方法上声明异常,
    便于提高安全性,让调用处进行处理,不处理则编译失败。
     
    对多异常的处理
    1.声明异常时,最好声明为更具体的异常类型,这样也能处理的更为具体。
    2.对方声明几个异常,就对应几个catch块。
    如果多个catch块中的异常有继承关系,使用父类异常的catch块放在最后面,因为catch块是按顺序处理的。另外,不要定义多余的catch块。
     
    建议进行catch处理时,catch中一定要定义具体的处理方式,不要简单地定义一句e.printStackTrace();
    也不要简单地就写一条输出语句。
     
    自定义异常
    因为项目中可能出现特有的问题,而这些问题并没有被java所描述并封装成对象,所以对于这些问题,可以按照java中对问题封装的思想,将特有的问题进行自定义的异常封装。
     
    自定义异常类应该继承Exception。
    继承Exception的原因:
    因为异常类和异常对象都需要被抛出,它们都具备可抛性,这是Throwable体系所具有的特性。
    这有这个体系中的类和对象才可以被throw和throws操作。
     
     
    当在方法内部出现了throw抛出异常对象,那么就必须要给出对应的处理动作。
    要么在内部用try,catch处理;
    要么在方法上声明让调用者处理。
     
    一般情况下,方法内部出现异常,方法上需要声明。
     
    throws和throw的区别
    throws 使用在方法上(小括号和大括号之间);
    throw使用在方法内部。
     
    throws后面跟的异常类名,可以跟多个,中间用逗号隔开。
    throw后面跟的是异常对象。
     
    Exception中有一个特殊的子类RuntimeException(运行时异常),
    如果在方法内部抛出该类或者其子类异常,可以不再方法上声明,编译也可以通过;
    如果在方法上声明该类或其子类异常,调用者可以不用进行处理,编译一样通过。
     
    之所以不需要再方法上进行声明,是因为不需要调用者进行处理。
    当该异常发生,程序就会停止运行,因为在运行时出现了无法继续运算的情况,希望停止程序后,对代码进行修改。
     
    自定义异常时,如果该异常的发生,使程序无法继续运行下去时,
    就让该自定义异常继承RuntimeException。
     
    对于异常分为两种:
    1.编译时被检测到的异常。
    2.编译时无法被检测到的异常。(运行时异常。及RuntimeException及其子类)
  • 相关阅读:
    python批量插入mysql数据库(性能相关)以及反引号的使用
    python if __name__=='__main__'的理解
    Django学习教程
    python xml文件解析
    对python的super方法的用法理解
    python魔术方法(__init__,__call__,被双下划线包围的方法)
    python进阶书籍 流畅的python
    关于json串的双引号和单引号
    maven 的使用
    学java的目的是大数据和人工智能,勿忘初心!
  • 原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/4971877.html
Copyright © 2011-2022 走看看