关于软件构造的异常处理的总结

在学习软件构造的过程当中,我也遇到了许多的有意思的话题,其中就包含了之前从来没有遇到过的,委托的处理方式。以及第一次总结的异常处理机制,下面我想对于我的心得做一下总结。

目录

Exception分类以及特征总结

不同类型处理方式

try–catch–finally 模块总结

新建异常类总结

Exception分类以及特征总结:
首先异常的分类可以定义为error和Exception。error是系统内部的错位,程序员对于这样的错误是无能为力的,一旦发生,最好能够使得程序可以优雅的结束终止;

    而Exception一般是程序造成的错误,比如说文件没有读入,找不到文件位置等等的错误,这样的情况需要我们能够对他们进行捕获,处理等等。

如同上图描述的异常处理,Exception也分为了两类,这需要对于这两类有着不同的处理:

Checked Exception: 不能恢复的Exception,需要由使用者来处理的一类异常,例如IOException,这样的异常不捕获,使得编译报错。
Unchecked Exception: 指的是在运行时才会导致程序奔溃的异常,编译时候并不会报错。例如,Runtime Exception。
error的分类:

User input errors 用户输入错误
Device errors 设备错误
Physical limitations 物理限制
同时,如果在程序的每一处都去使用处理Checked Exception,那么这将使得程序冗长,我们一般需要把Checked Exception改编为Unchecked Exception,来提高可读性和效率:

Checked Exception在编写代码时就能发现
Checked Exception必须要被捕获或者抛出
Unchecked Exception在运行时才能发现
不同类型处理方式:
既然Error我们无能为力,那就转向关注我们能处理的Exception。

    异常定义:异常:程序执行中的非正常事件,程序无法再按预想的流程执行。

处理方式分析:
将错误信息传递给上层调用者,并报告“案发现场”的信息。
return之外的第二种退出途径,若找不到异常处理程序,整个系统完全退出
面对Unchecked exception,我们可以进行不处理的态度,编译没问题,但执行时出现
就导致程序失败,代表程序中的潜在bug。

try–catch–finally 模块总结:
模块的总体目的设计为:

    Catching an exception (try, catch, finally) 捕获并处理XX异常。

    形式用例如下:

public static void main(String args[]) {
FileInputStream fis = null;
try {
fis = new FileInputStream(“sample.txt”);
int c;
while ((c = fis.read()) != -1)
System.out.print((char) c);
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
面对Unchecked 异常也可以使用 throws声明或try/catch进行捕获,但大多数时候是不需要的,也不应该这么做——掩耳盗铃 ,对发现的编程错误充耳不闻。

新建异常类总结:
如果 JDK 提 供 的 exception 类 无法 充分描述 你的程序发生的错误,可以创建 自己的异常 类。

构建新的异常的实例代码:

public class FooException extends Exception {
public FooException() { super(); }
public FooException(String message) { super(message); }
public FooException(String message, Throwable cause) {
super(message, cause);
}
public FooException(Throwable cause) { super(cause); }
}
调用新定义的checked exception:

try {

} catch(FooException ex) {
ex.printStackTrace();
System.exit(1);
} catch(IOException ex) {
throw new FooException(ex);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值