八卦阵 发表于 2022-8-9 14:45:24

软件构造-异常的使用技巧

在实际中,用户输入的数据格式未必是永远正确的,尝试打开文件的操作也不一定每次都成功,异常的出现是不可忽视的,Java为程序员提供了明确而优雅的解决方案,也就是异常的捕获与抛出。课程中我们主要介绍了如何通过throws和try catch语句来应对异常;除了默认的异常类,程序员还可以定义自己的异常对象等;异常有不同的分类,有Error、Exception之分,也有checked和unchecked异常。
有人认为事无巨细的异常是一种累赘,也有人认为抛出的异常还不够多,无论如何为了避免我们的程序出现莫名其妙的问题,异常总是有它的意义所在。在《Java核心技术》一书中,介绍了一些异常的使用技巧,下面进行简单的总结和说明:
1.异常不能代替简单的测试
编写异常抛出的策略并不是一件难事,但是用抛出异常来代替一些测试用例是得不偿失的,异常涉及了大量系统层面的调用,例如当我们强制无论栈空与否都进行弹出操作时,抛出一个EmptyStackException异常所消耗的时间就会远远超出调用isEmpty方法来得到结果。
2.不要过分的细化异常
异常处理一般有这样的要求:应该将正确处理与错误处理分开,假如我们的语句块中可能有多个异常的出现,那么我们应当在catch部分进行分类的处理,而不是在每句可能出现异常的语句处写一个try...catch...结构
3.充分利用异常的层次结构
这一部分可以参考异常树的结构,如果简简单单地抛出RuntimeException异常,可能会令人费解,最好某个合适的子类或者编写一个自定义的异常类来最快找到异常的位置。
4.不要压制异常
我们当然可以利用try...catch...语句来避免程序抛出异常,然而很多异常都会预示着程序出现了一些逻辑上的错误,或者某种用户可能的输入情况未被妥善处理,除了安静地通过编译阶段,处理异常本身并没有意义。
5.在检测错误时,“苛责”比放任更好
例如在栈为空时,是返回一个空指针好,还是抛出一个EmptyStackException更好?实际上,返回一个null很有可能在以后造成了空指针NullPointerException异常,这时再检查程序中哪里出现了错误时可能就会非常困难。及时抛出异常,也是一个非常重要的策略。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 软件构造-异常的使用技巧