代码重用,是程序员们“千百年来”所追求的目标,同样Exception也是代码,也该尽量被重用。所以,应该尽量使用标准的异常,而不是轻易地使用自造的异常。
很多的类库都定义了自己的异常,我本人所参与设计的几个项目大多数也有自己的异常。但这些异常都是仅适用于项目自身的某些情形的,换个角度说,就是这些情形下没有太合适的标准异常来表示,加之自造异常还可以做某些处理,如信息的反馈,日志、错误消息的封装等。
但是,当那些常见的“低级”错误发生时,应使用相应的“定式”。记住以下标准异常吧:
IllegalArgumentException |
参数的值不合适。方法的开始处的参数检查,一旦有问题就该抛出这个 |
IllegalStateException |
对于这个方法调用而言,对象状态不合适。同样也是开始处检查 |
NullPointerException |
空指针 |
IndexOutOfBoundsException |
下标越界 |
ConcurrentModificationException
|
禁止并发的情况下,被检查到并发的修改 |
UnsupportedOperationException
|
不支持这种方法,如接口/抽象父类中已经定义,但尚未实现的方法 |
利用类库中现有的异常是被提倡的。但有一个重要的原则,就是你使用的场景一定要复合这个异常在文档中所描述的条件。
【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208
分享到:
相关推荐
第四条:利用const来指定不变性。在函数声明和定义中使用const关键字,可以明确表示哪些部分的代码不应该改变,提高代码的可读性和安全性。 第五条:避免在对象构造过程中调用虚函数。由于构造过程中的this指针未...
- **合法性与安全性**: 采购的食品、食品添加剂及相关产品必须符合国家食品安全标准和相关规定,禁止采购《食品安全法》第二十八条禁止生产经营的食品以及《农产品质量安全法》第三十三条规定的不得销售的食用农产品...
静态构造函数在第一次使用静态成员之前自动调用,确保了静态成员的正确初始化。 #### 14. 用多个构造函数时,利用构造函数链 通过构造函数链可以减少代码重复,提高代码复用率。 #### 15. 使用`using`和`try/...
3. 变量名和方法名:使用小驼峰命名法,第一个单词全小写,其余单词首字母大写,如`myVariable`,`myMethod()`。 4. 常量名:全部大写,单词间用下划线分隔,如`MY_CONSTANT`。 5. 包名:采用小写字母,多词时使用点...
- **谨慎使用第三方文件**:对外部文件的使用需要特别小心,确保这些文件来自可信的来源并且没有安全风险。 - **及时释放内存资源**:确保内存资源得到及时释放,避免内存泄漏导致系统不稳定。 - **显式关闭释放资源...
### Python变量命名规范详解 #### 一、概述 在Python编程中,良好的命名规范能够显著提升代码的可读性和...此外,注意使用下划线的不同含义,以及何时使用全拼写或缩写,可以帮助开发者写出更加标准和一致的代码。
由Scott Meyers撰写的《改善程序设计技术的50个有效做法》(第二版,2002年3月)是一本旨在帮助程序员提升C++编程技巧的宝贵资源。这本书通过深入浅出的方式,提供了50个实用的建议,涵盖了C++编程的各个方面,包括...
#### 二、Java标准库简介 Java标准库是Java语言的一个重要组成部分,它包含了一系列预定义的类和接口,用于实现常见的功能和服务。这些库使得开发人员可以快速构建复杂的应用程序而无需从头编写所有代码。 - **...
### 第四章:创建基于二进制的组件 #### 原则30:选择与CLS兼容的程序集 与公共语言规范(CLS)兼容的程序集可以在多种.NET语言中使用,增强了代码的互操作性。 #### 原则31:选择小而简单的函数 小型函数易于...
尽量减少反射的使用 反射是一种强大但低效的技术,应当谨慎使用以避免性能瓶颈。 #### 40. 模式匹配和异常处理 使用模式匹配(如switch表达式)和适当的异常处理策略可以提高代码的健壮性和可读性。 #### 41. ...
- **第四种**:全Java/本机协议驱动(Pure Java Driver),直接与数据库通信。 - **性能与兼容性**:不同类型的驱动在性能、兼容性和易用性方面有所差异,选择最适合当前环境的驱动对于提升应用表现至关重要。 ##...
尽量避免使用装箱(boxing)和拆箱(unboxing) 装箱和拆箱会导致性能开销,尤其是在循环中。 ```csharp List<int> numbers = new List<int> { 1, 2, 3 }; // 不推荐 List<object> objects = numbers.Select(n => ...
1. **合法性与安全性**: 采购的所有食品、食品添加剂及相关产品必须符合国家食品安全标准和相关规定,禁止采购《食品安全法》第二十八条禁止生产和经营的食品以及《农产品质量安全法》第三十三条禁止销售的食用农...
尽量减少静态变量的使用,因为它们可能引起线程安全问题。 #### (36) 使用final 对于不会改变的变量,应使用final关键字声明,以提高代码的稳定性和可维护性。 #### (37) private vs protected 在不需要外部访问的...
- **避免使用魔法数字**:尽量使用常量或枚举代替魔法数字。 - **异常处理**:合理使用try-except语句来处理异常情况。 - **函数的单一职责**:每个函数应只负责一个功能,这有助于提高代码的可维护性和可测试性。 ...
2. **异常处理**:尽管C++标准库支持异常,但Google的代码库中很少使用异常。相反,使用错误码和检查函数返回值的方式来处理错误。 3. **性能优化**:在关键路径上避免不必要的开销,比如减少虚拟函数调用,使用内联...
#### 二、一致性的建议 一致性是Python代码规范中的核心原则之一。它强调在整个项目中保持一致的编程风格。例如,在同一项目中选择使用下划线命名法(snake_case)或驼峰命名法(CamelCase),并始终保持这种风格...