几种改善异常处理的技能
2023-03-10
更新时间:2023-03-10 08:48:55 作者:通达百科
改善异常[一部口味很重的日本变态cult风格恐怖片,可谓是日本版的《电锯惊魂》,主题是考验两个人的爱情在生死痛苦面前到底有多真多持久。]处理[处理是汉语词汇,读作chǔ lǐ,出自唐韩愈《黄家贼事宜状》,有处置、安排、加工等意思,快速的解决问题,也泛指低价出售。]的几个技巧,在软件开发过程中,往往会出现一些不可预知的错误,异常处理通常是防止这种未知错误的常用措施,它的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高。
异常处理技巧1. 使用一个单一的、系统范围的异常类
不要针对每种异常类型创建单独的类,而是只创建一个,并使它继承RuntimeException。这可以减少类的数量,并移除你不会去处理的需要声明的异常。
异常处理技巧2. 为错误代码使用枚举[在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。]
大多数开发者会把导致异常的原因放到消息中,出现异常时,查看日志文件即可。但是这也有一些缺点:
更好的办法是使用枚举来表示异常的类型。针对每种错误创建一个枚举,并使枚举实现一个ErrorCode接口,然后将它引用为异常中的一个字段。
当抛出异常时,只需在适当的枚举中传递即可。
现在,当你需要测试具体情况时,只需比较异常代码即可。
在某些情况下,一个数字形式的错误代码可以对应一个异常,例如HTTP响应。在这种情况下,在ErrorCode接口中添加一个getNumber方法,并在每个枚举类型中实现它。
异常处理技巧4. 将动态字段添加到异常处理中
好的异常处理也意味着记录相关数据,而不仅仅是堆栈跟踪。这样做会节省你大量用于诊断和重现错误的时间。当你的程序停止工作时,也无需客户告诉你,他们做了什么。
做到这一点最简单的方法是在异常处理中增加一个java.util.Map字段。该字段主要作用是保留所有异常相关的数据。如果你使用fluent interface(连贯接口)模式,你还需要添加一个通用的setter方法。
抛出异常,并带有相关的数据,类似于下面的形式:
异常处理技巧5. 防止不必要的嵌套
长且多余的堆栈跟踪,对谁都没有好处。更糟的是,它们浪费你的时间和资源。当重新抛出异常时,调用一个静态封装方法,而不是异常的构造函数。封装方法将决定何时嵌套异常,以及何时返回原来的实例。