Java基础知识五:异常、断言、日志和调试

异常分类:在Java中,所有的异常对象都是 派生于Throwable类的子类 。在下一层立即分解为 Error和Exception两个子类:Error类描述了 系统级错误和资源耗尽的问题,出现这种问题一般无能为力;在设计Java程序时,我们应该关注 Exception层次结构,Exception又分为两个分支,一个分支派生于RuntimeException,另一个分支包含其它异常。这么划分的依据是:RuntimeException输入程序错误导致的异常,而程序本身没有问题,像 I/O错误导致的异常属于其它异常。

已检查异常:当遇到无法处理的情况时,Java的方法可以抛出一个异常。一个方法 不紧需要告诉编译器将要返回什么值,还需要告诉编译器可能发生什么错误。示例如下:

public static Object goodCopyof(Object a, int newLength) throws FileNotFoundException

创建异常类:创建自己的异常类,我们只需要让自己的类 继承自  Exception 或者 其子类。 习惯上,自己的异常类应该包含两个构造器:一个是默认的构造器,一个是带有详细信息的构造器。

处理异常: 应该捕获知道如何处理的异常, 不知道如何处理的异常应当抛出给调用者。

子类和超类中的异常:如果 覆盖超类的某个方法,而 超类的这个方法并没有抛出异常,则 子类的这个方法必须捕获所有已检查的异常。子类覆盖的方法所抛出的异常 不允许超过 超类方法所列出的 异常范围。

捕获多个异常: 可以使用并列的catch子句 捕获多个异常,也可以在 捕获异常之后抛出新的异常,下面是 异常包装的示例:

try{

        }catch (SQLException e){
            Throwable se = new ServerException("error");
            se.initCause(e);
            throw se;
        }

使用这种方式可以 将一个异常 包装在 另一个异常中 抛出。在 外部 可以使用 getCause()方法获得 原始的异常。

finally子句: 在某些场景, 会有操作完成必须关闭某些连接或者 释放某些资源的操作,这个时候必须使用  try finally结构,确保try块中的代码无论正常执行还是发生异常,都会执行finally中的操作,释放必要的资源。

带资源的try语句:如果资源 实现了 AutoCloseable接口,则可以使用 带资源的try语句。示例如下。在 try块结束时,会自动调用资源的 close()方法,关闭资源。其作用和 finally的作用一样。try()中可以 打开 多个资源。

try()
        {
            
        }

日志和调试: 日志可以使用内置的 java.util.logging包,可以设置日志的输出级别,也可以使用其它的日志框架 比如 log4j。调试一般根据 具体的IDE会有不同,调试的时候可以使用断点来分析具体的行为是否符合预期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值