"异常日志-天线原理与设计-谢处方"
在《异常日志-天线原理与设计-谢处方》中,主要涉及的是Java编程中的异常处理规范,这部分内容是Java开发手册的一部分,旨在提高代码质量和可维护性。以下是关于异常处理的详细知识点:
1. **不要捕获特定的运行时异常** - 应该避免捕获像`NullPointerException`或`IndexOutOfBoundsException`这样的运行时异常,而应该通过预先检查来避免这些异常的发生,以增强程序的健壮性。
2. **异常不应用于流程控制** - 异常处理不应该用于代替正常的条件控制语句,因为异常处理通常比条件分支的效率更低。
3. **避免大段代码try-catch** - 大面积的try-catch块是不负责的,应当只对可能出现异常的不稳定代码进行捕获,并且尽可能细化异常类型以进行针对性处理。
4. **异常处理的责任传递** - 如果捕获异常后不做处理,应将异常抛给调用者,让上层代码决定如何处理。最外层的业务代码必须处理异常,并转化为用户可理解的错误信息。
5. **事务处理与异常** - 当try块包含事务代码时,如果捕获到异常,记得在catch块中手动回滚事务,确保数据一致性。
6. **资源关闭** - 在finally块中,必须关闭如文件流、数据库连接等资源,即使在异常处理中也要使用try-catch保证关闭动作的执行。JDK 7引入的try-with-resources结构可以简化资源管理。
7. **避免finally块中的return** - finally块中的return会立即结束方法执行,不会继续执行try块中的return语句,因此应当避免这种情况。
8. **异常匹配** - 捕获的异常类型要么与抛出的异常完全匹配,要么是其父类。这样可以确保捕获到正确类型的异常。
9. **返回null的注释** - 允许方法返回null值,但需提供充分的注释说明何时可能返回null,以便调用者能够进行null检查,防止出现空指针异常(NPE)。
10. **防止NPE** - 防止NPE是每个程序员的基本职责,要注意可能导致NPE的场景,例如包装类型的返回值和方法调用等。
此外,文档还提到了命名规范,包括:
1. **命名规则** - 不允许以下划线或美元符号开始或结束命名,禁止使用拼音与英文混合,也不允许直接使用中文。
2. **类名** - 使用UpperCamelCase风格,但领域模型的命名如DO/DTO/VO/DAO等例外。
3. **方法名、参数名、成员变量、局部变量** - 使用lowerCamelCase风格。
4. **常量命名** - 全部大写,单词间用下划线分隔。
5. **抽象类、异常类和测试类** - 抽象类以Abstract或Base开头,异常类以Exception结尾,测试类以被测试类的名字加上Test结尾。
6. **数组定义** - 数组定义时,中括号是类型的一部分,如`String[] args`。
7. **布尔变量** - POJO类中的布尔变量不应以is开头,以免引起序列化错误。
这些规范旨在创建整洁、可读性强的代码,提高代码的可维护性和团队间的协作效率。遵循这些规约,可以减少错误,提升代码质量,使项目更加稳健。