读书笔记--编写高质量代码 改善java程序的151个建议(八)异常
2014-08-14 11:13
639 查看
读书笔记--编写高质量代码:改善java程序的151个建议(八)异常
这个异常内容不多,简单总结一下就好了提倡异常封装
异常封装可以提高系统的友好性,和可维护性,封装后给用户提供的异常信息更友好,然后给代码维护人员更容易阅读。受检异常尽可能的转化为非受检异常
受检异常使接口声明变得很脆弱,代码可读性降低,还增加了开发工作量,但是在受检异常威胁到系统的安全性、稳定性、可靠性、正确性时,不能转换为非受检异常不要在finally块中处理返回值
finally可能引起覆盖try中的返回值和屏蔽异常等问题。不要在构造函数中抛出异常
使用Throwable获得栈信息
AOP编程可以很轻松的控制一个方法调用哪些类,也能够控制哪些方法允许被调用,一般来说切面编程只能控制到方法级别,不能实现代码级别的植入,比如一个方法被类A的m1方法调用时返回1,在类B的m2方法调用时返回0,着就要求被调用者据有识别调用这的能力。在这话总情况下,可以使用Throwable来获得栈信息,来鉴别调用者:public class Client { public static void main(String[] args) { Invoker.m1(); Invoker.m2(); } } class Foo { public static boolean m() { // 取得当前栈信息 StackTraceElement[] sts = new Throwable().getStackTrace(); // 检查是否是m1方法调用 for (StackTraceElement st : sts) { if (st.getMethodName().equals("m1")) { return true; } } return false; } } class Invoker { // 该方法打印出true public static void m1() { System.out.println(Foo.m()); } // 该方法打印出false public static void m2() { System.out.println(Foo.m()); } }
在JDK1.4中,可以这样写:
StackTraceElement[] stackTraceElements = new Throwable().getStackTrace();
然后就可以获取到类名、方法名、行数、文件名等信息:
stackTraceElements.getClassName()
stackTraceElements.getFileName()
stackTraceElements.getLineNumber()
stackTraceElements.getMethodName()
在JDK1.5中,可以使用:
StackTraceElement[] stackTraceElements = Thread.getStackTrace();
异常只为异常服务
不要用异常来做判断或者区别业务处理逻辑走向。这样做降低了系统性能,降低了代码的可读性,而且还容易隐藏运行期产生的错误。也不要因为异常性能不高而不使用异常,异常可以让系统更健壮,开发维护更省心,而正确使用异常的性能开销还是可以接收的。
相关文章推荐
- 编写高质量代码--改善Java程序的151个建议--读书笔记
- 读书笔记--编写高质量代码 改善java程序的151个建议(六)枚举与注解
- 编写高质量代码:改善Java程序的151个建议(第8章:异常___建议110~113)
- 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
- 《编写高质量代码 改善Java程序的151个建议》读书笔记
- 读书笔记--编写高质量代码 改善java程序的151个建议(一)基础
- 读书笔记--编写高质量代码:改善java程序的151个建议(三)重写equals六大原则
- 编写高质量代码:改善Java程序的151个建议(第8章:异常___建议114~117)
- 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
- [编写高质量代码:改善java程序的151个建议]建议85 小心switch带来的空值异常
- 读书笔记--编写高质量代码:改善java程序的151个建议(二)匿名类与构造代码块
- 读书笔记--编写高质量代码:改善java程序的151个建议(五)数组和集合
- 读书笔记--编写高质量代码:改善java程序的151个建议(四)String,StringBuilder,StringBuffer
- 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
- [编写高质量代码:改善java程序的151个建议]建议58 强烈建议使用UTF-8编码
- [编写高质量代码:改善java程序的151个建议]建议62 警惕数组的浅拷贝
- [编写高质量代码:改善java程序的151个建议]建议55:注意字符串的位置
- 编写高质量代码:改善Java程序的151个建议