Java基础[7]异常,断言,日志
来源:互联网 发布:如何做淘宝美工 编辑:程序博客网 时间:2024/05/23 00:57
异常
1
异常类的层次结构使用总结:
2 补充
- 常见RuntimeException有,错误类型转换,数组访问越界,访问null指针。
- 使用包装技术,不丢失原始异常细节。当需要把捕获的原始异常设置为新的异常时,使用包装技术不会丢失原始异常细节。 .initCause(e)将原始异常进行包装;.getCause()获取原始异常类型。(底层框架对原始异常捕获,进行包装抛出新的异常。你不能更改框架,当需要获取原始异常时,getCause()就很有用)
/** * 包装异常,获取原始异常示例 * @author gao tianci * @version $Id: TestException.java, v 0.1 2017年7月18日 下午9:58:43 gao tianci Exp $ */public class TestException { @Test public void test() { try { throwIllegealOne(); } catch (IllegalArgumentException e) { System.out.println("------(initCause())------"); System.out.println(e.getMessage()); System.out.println(e.getCause() instanceof SQLException); } try { throwIllegealTwo(); } catch (IllegalArgumentException e) { System.out.println("-----------(e)-----------"); System.out.println(e.getMessage()); System.out.println(e.getCause() instanceof SQLException); } try { throwIllegealThree(); } catch (IllegalArgumentException e) { System.out.println("---------(msg+e)---------"); System.out.println(e.getMessage()); System.out.println(e.getCause() instanceof SQLException); } } //SQLException public static void throwSQL() throws SQLException { throw new SQLException("sql error."); } //initCause() public static void throwIllegealOne() throws IllegalArgumentException { try { throwSQL(); } catch (SQLException e) { IllegalArgumentException illegal = new IllegalArgumentException("参数非法"); illegal.initCause(e); throw illegal; } } //e public static void throwIllegealTwo() throws IllegalArgumentException { try { throwSQL(); } catch (SQLException e) { throw new IllegalArgumentException(e); } } //msg + e public static void throwIllegealThree() throws IllegalArgumentException { try { throwSQL(); } catch (SQLException e) { throw new IllegalArgumentException("参数非法" + e); } }}
测试结果:
------(initCause())------参数非法true-----------(e)-----------java.sql.SQLException: sql error.true---------(msg+e)---------参数非法java.sql.SQLException: sql error.false
分析堆栈轨迹
堆栈轨迹是一个方法调用过程的列表。可借助Throwable类的printStackTrace()或getStackTrace()方法进行分析。静态的Thread.getAllStackTrace()方法,它可以产生所有线程的堆栈轨迹。踩过的坑
一个方法的内部开启了多线程处理,多线程里出现了异常,你在方法出口处肯定捕捉不到!因为他们不是一个线程了!!!
断言
- 断言,断言机制允许在测试期间向代码插入一些检查语句,当代吗发布时,这些插入的检查语句会被自动地移走。
- 两种形式:assert 条件;assert 条件:表达式;
都会对条件进行检测,第一种情况,条件为false,抛出AssertionError异常,第二种,把表达式传给AssertionError的构造器。 - 默认情况下,断言禁用,可以开启包级别的断言;也可开启系统级别的断言。
- 工作中尚未见到使用很多断言,自测的时候可以辅助使用一些。
日志
java自带的日志包在 java.util.logging.*中。使用开源的日志组件会更友好,强烈推荐slf4j,代码简洁,格式化方便。
eg:
logger.info("Processing trade with id: {} and symbol : {} ", id, symbol);
此外常用的还有,log4j;logback等组件。
阅读全文
0 0
- Java基础[7]异常,断言,日志
- [JAVA基础]异常、断言、日志和调试
- 【Java基础】异常 断言
- java-异常/断言/日志/调试
- java 异常、断言和日志
- JAVA基础【7.2】《Java核心技术1》异常、断言、日志和调试-断言
- 7 异常、断言和日志
- JAVA基础【7.3】《Java核心技术1》异常、断言、日志和调试-日志
- JAVA基础【7.1】《Java核心技术1》异常、断言、日志和调试-异常
- Java中的异常、断言、日志【草稿上】
- Java中的异常、断言、日志【草稿上】
- Java中的异常、断言、日志【草稿中】
- Java中的异常、断言、日志 log4j
- Java中的异常、断言、日志 log4j
- Java的异常、断言、日志和调试
- Java异常、断言、日志与调试
- JAVA基础【7.4】《Java核心技术1》异常、断言、日志和调试-调试
- 2015 7 6 Java核心技术卷一 第11章 异常 断言 日志和调试
- normalize.css
- 欢迎使用CSDN-markdown编辑器
- MySQL实现ROW_NUMBER()/DENSE_RANK()/RANK()
- JS动态添加option和删除option(附实例代码)
- Ecplise 文档注释及生成
- Java基础[7]异常,断言,日志
- QT更改窗口名称 & QT生成多个窗口
- Gobject简介
- 秒杀模块碎碎念笔记(3)-WEB层
- ajax发送到action自动解析格式
- C++自己注意到的一些问题
- 一般图最大匹配的匈牙利算法
- 百练noi 9271:奶牛散步
- Spark SQL笔记——技术点汇总