Java学习笔记6

异常

Java把所有的非正常信息分成两类:

  • 异常
  • 错误

这两类异常都是继承于Throwable。

Java异常捕获有一个特点就是,把小异常放在catch块的前面进行先处理,然后再捕获大异常,把大异常放在catch块的后面。

有的时候在try块里面打开的物理资源(例如:数据库连接、网络连接和磁盘文件等),这些物理资源都必须显示的回收。Java的垃圾回收机制是不会回收任何的物理资源,垃圾回收机制只能回收堆内存中的对象所占用的内存。这就必须使用finally来完成垃圾的回收。

Java的异常也被分成两类:Checked异常和Runtime异常。所有的RuntimeException类及其子类的实例都被称为Runtime异常,不是RuntimeException类及其子类的异常实例则被称为Checked异常。

自定义异常

如果是自定义检查性异常则需要继承Exception基类,然后提供一个无参的构造器,以及一个带字符串的有参数构造器,并且将这个字符串参数作为该异常对象的描述信息。例如:

public class ExceptionTest extends Exception {
    public ExceptionTest() {}
    public ExceptionTest(String msg) {
        super(msg);
    }
}

如果定义的是非检查性异常(也就是运行时异常),就需要自定义的类继承RuntimeException类,并且提供两个构造器,提供的形式如检查性异常一样。

public class RuntimeExceptionTest extends RuntimeException {
    public RuntimeExceptionTest() {}
    public RuntimtExceptionTest(String msg) {super(msg);}
}

对于异常信息的处理一般的做大是:层与层之间的异常信息有非常清晰的划分,上层功能的实现严格依赖于下层的API,但是不会跨界访问。例如:当业务逻辑层出现SQLException异常的时候,程序不应该把底层的SQLException异常传到用户界面,通常的做法是在程序中先捕获原始的异常信息,然后抛出一个新的业务异常,新的业务异常中包含了对用户的提示信息。这种处理方式被称为异常转译。例如:

public void exceptionMethod() throws SalException {

    try {
    ...
    } catch(SQLException e) {
        // 做一些处理
        ...
        // 包装异常,抛出一个新的异常
        throw new SalException(...);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,246评论 18 399
  • Java 面试题 整理自牛客网 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟...
    GuaKin_Huang阅读 13,618评论 19 265
  • 序列化就是将object转为byte序列,反之叫做反序列化。 序列化流(ObjectOutputStream):是...
    edwin1993阅读 1,180评论 0 0
  • 01 在深受大家喜欢的动物世界中各种动物在求偶期间的各种仪式、战斗,都只是由隐藏在这些漂亮而杰出机体中的自私基因的...
    houpanpan926阅读 2,755评论 1 3
  • 老大组织大家一起阅读《好好学习》,但参加条件是购买《好好学习》这本书。能让老大背书的作者,一定是牛人,毫不犹豫的...
    IIIIIIIIIIII阅读 1,450评论 0 0

友情链接更多精彩内容