21.5 异常处理的原则

异常处理虽然是个好的特性,但是也不能滥用。以下是一些异常处理的原则,供大家借鉴和参考。

❑尽量由程序自动处理异常。当异常发生时,程序在捕获后应该先尝试处理异常,如果错误得以排除,那么程序将可以恢复正常,而不是每次捕获到异常就立刻通知用户来处理,或者仅仅把异常信息记录下来。例如,当两个客户端在网络上传送数据时网络中断,程序捕获了网络中断的异常,此时在记录错误的同时,应该尝试重新建立网络连接,如果建立成功,就继续传送剩余的数据,用户根本不知道网络曾经中断过,也不需知道。除非经过一定次数的尝试依然不能建立网络连接,此时再告知用户也不迟。

❑使用措辞友好的异常信息。如果需要将异常信息告知用户,那么要采用措辞友好的异常信息,而不是使用专业性很强的技术术语。在提供给专业软件维护人员的信息中可以使用专业术语,但如果给普通用户,则应使用通俗易懂的业务语言进行叙述。

❑限定异常范围。应该尽量地缩小异常处理的范围,如果只需要检测某一行代码可能发生异常,就不要把整段的代码都放进try语句块中。

❑应该尽量捕获更具体的异常。如果有更具体的异常就捕获更具体的异常,应该尽量避免直接捕获Exception异常。

❑尽可能在上层捕获并处理异常。如果在下层代码使用过多的异常处理语句,将会给性能带来较大影响,因此应尽可能在上层代码捕获并处理异常。由于下层代码使用较少的异常捕获代码,也使得代码更加清晰和易读。

❑应将异常信息保存在日志中。异常的记录很重要,一般我们会把异常信息按照不同的等级写入日志中。日志可以是文件,也可以存储于数据库中。对于专业人员来说,这些信息可以作为解决问题时的依据。