zoukankan      html  css  js  c++  java
  • 第十章 通过异常处理错误

    一、基本异常

    1. 异常参数
      (1)和其他Java对象一样,可以使用new从heap产生出一个异常对象
      (2)所有的标准异常都有两个构造参数:第一个是default构造函数,第二个可以接受字符串参数,允许你将相关信息置于异常之中.此外,这些子类很可能有与其相关联的 cause, 因此也应有两个构造方法,一个带 Throwable (cause),一个带 String(详细消息)和 Throwable (cause)。
      (3)在版本 1.4 中还引入了 getStackTrace() 方法,它允许通过各种形式的 printStackTrace() 方法编程访问堆栈跟踪信息,这些信息以前只能以文本形式使用。此信息已经添加到该类的序列化表示形式,因此 getStackTrace 和 printStackTrace 将可在反序列化时获得的 throwable 上正确操作。

    2. 异常的捕捉和处理
      (1)try模块捕捉异常
      (2)紧接try的catch模块处理异常

    3. 编写自己的异常类
      (1)如果要编写自己的异常类,一定得继承某个既有的异常型别,这些子类很可能有与其相关联的 cause,因此也应有两个构造方法,一个带 Throwable (cause),一个 带 String(详细消息)和 Throwable (cause)。在版本 1.4 中还引入了 getStackTrace() 方法,它允许通过各种形式的 printStackTrace() 方法编程访问堆栈 踪信息,这些信息以前只能以文本形式使用。此信息已经添加到该类的序列化表示形式,因此 getStackTrace 和 printStackTrace 将可在反序列化时获得 的throwable上正确操作。
      如下为内置IO异常的源码:

    public class IOException extends Exception {
    static final long serialVersionUID = 7818375828146090155L;
    public IOException() {
    super();
    }
    public IOException(String message) {
    super(message);
    }
    public IOException(String message, Throwable cause) {
    super(message, cause);
    }
    public IOException(Throwable cause) {
    super(cause);
    }
    }

    (2)Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者 Java throw 语句抛出。类似地, 只有此类或其子类之一才可以是 catch 子句中的参数类型。
    (3)所有的异常类都继承自Exception,所有的错误类都继承自Error类(我们只关注异常)

    1. 异常规格
      (1)异常规格是在关键字throws之后接一连串可能引发的异常型别。
      (2)例如:void method() throws Exception_1,Exception_2,Exception_3;

    2. 捕捉所有异常
      (1)可以使用java.lang.Exception捕捉所有异常,但该类是型别是所有重要异常类的基类,因此无法从中获取得到太多特定信息。不过可以调用一些源于Thorwable (Throwable 类是 Java 语言中所有错误或异常的超类)的函数。

    3. 重掷异常
      (1)实例如下:

      catch(Exceptiosn e){
      throw e;
      }

    二、Java标准异常

    1. 运行时异常的特殊情况
      (1)你无法捕捉的错误(如:你的函数收到客户端传来的一个null reference)
      (2)身为程序员的你应该在自己的程序代码中检查的错误(如:ArrayIndexOutOfBound Exception)
    2. 以finally进行清理
      (1)无论try block是否掷出异常,finally语句都会执行其子句

    三、异常限制

    四、构造函数

    五、异常的匹配

    1. 异常会被它所吻合的第一个catch子句捕捉过去

    六、异常的使用原则

    1. 修正问题,并在此调用引发异常的那个函数
    2. 暂时解决问题,不再尝试执行该函数,转而继续程序的执行
    3. 计算出某个可替代结果,用来替代函数原本的值
    4. 终止程序
    5. 进行简化
    6. 让程序库和程序更安全。

    七、总结

    暂且当做对异常机制的简单了解吧。
  • 相关阅读:
    [Angular 2] Handle Reactive Async opreations in Service
    移动应用中的流设计
    Linux/Unix--设备类型
    [CF 276C]Little Girl and Maximum Sum[差分数列]
    Java多态
    Shiro(4)默认鉴权与自定义鉴权
    HDU4667(有错)
    weblogic8.1 登陆5 ip 限制
    [置顶] struts2+hibernate+spring整合(annotation版)
    hdu2159 二维完全背包
  • 原文地址:https://www.cnblogs.com/realsoul/p/5752794.html
Copyright © 2011-2022 走看看