Java编程思想第四版读书笔记——第十二章 通过异常处理错误

本文详细介绍了Java编程中的异常处理机制,包括异常的概念、基本异常、捕获和处理异常、创建自定义异常、异常说明、finally块的使用,以及异常匹配等关键点。异常处理使得程序在遇到错误时能够优雅地处理并恢复,或者提供详细的错误信息。通过理解并掌握这些内容,开发者可以更好地管理和预防程序中的错误。
摘要由CSDN通过智能技术生成


第十二章 通过异常处理错误

Java的基本理念是“结构不佳的代码不能运行”。
Java中异常处理的目的在于通过使用少于目前数量的代码来简化大型、可靠的程序的生成,并且通过这种方式可以使程序员增加自信。

1、概念

因为异常机制将保证能够捕获这个错误,所以不用小心翼翼的各种去检查。而处理错误只需要在一个地方完成,那就是 异常处理程序

只需要在 异常处理程序中处理错误。

2、基本异常

异常情形是指阻止当前方法或作用域继续执行的问题。
异常处理程序将程序从错误状态中恢复,以使程序要么换一种方式运行,要么继续运行下去。
在没有其它办法的情况下,异常允许我们强制程序停止运行,并告诉我们出现了什么问题。理想状态下,还可以强制程序处理问题,并返回到稳定状态的。
异常参数:

用new在堆上创建异常对象,所有标准异常类都有两个构造器,一个默认的,一个带参的。
能够抛出任意类型的Throwable对象,它是异常类型的根类。




3、捕获异常

监控区域是一个可能产生异常的代码,并且后面跟着处理这些异常的代码。

如果在方法内部抛出了异常,那么这个方法就此结束。如果不希望这个方法结束,那么可以在方法内设置一个特殊的块来捕获异常,即try块。为什么叫try呢,因为在这个块里“尝试”各种可能产生异常的方法进行调用,所以是try。

try {
// Code that might generate exceptions
} catch(Type1 id1)|{
// Handle exceptions of Type1
} catch(Type2 id2) {
// Handle exceptions of Type2
} catch(Type3 id3) {
// Handle exceptions of Type3
}

异常抛出后,异常处理机制将搜索参数与异常类型相匹配的第一个处理程序,进入catch语句处理,此时认为异常的到了处理。catch子句结束,则处理程序不再往下找匹配了。
终止与恢复:
异常处理理论上有两种基本模型,java支持终止模型。该模型假设错误非常关键,一旦异常被抛出,那么错误已经无可挽回,程序不能继续执行。
另一种模型是恢复模型,就是先修正错误,然后重新进入该方法。这个模型假定了修正完之后再进入执行一定会成功。
相比较终止模型还是比较占优的,因为恢复模型需要了解异常抛出的地点,麻烦。


4、创建自定义异常

可以异常类不写构造函数,使用默认无参构造函数,也可以写构造函数。酱紫可以实现在抛出的异常后面打印出异常所在函数等功能。比如:
class MyException extends Exception { 
       public MyException() {} 
       public MyException(String msg) { super(msg); } 
     } 
在抛出异常时
 public static void g() throws MyException { 
          System.out.println("Throwing MyException from g()"); 
           throw new MyException("Originated in g()"); 
       } 
那么,在打印的时候,就可以打印出
MyException : Originated in g() 

在异常处理程序中,调用Throwable类的printStackTrace()方法,那么“从异常方法调用处直到异常抛出处”的方法调用序列将被打印出来。如下:
MyException 
                at FullConstructors.f(FullConstructors.java:11) 
               at FullConstructors.main(FullConstructors.java:19)
 

printStackTrace()方法可以带参数,比如printStackTrace(System.out),这样打印出来的信息将被发送到System.out,如果该方法不带参,那么信息将被输出到标准错误流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值