`
lizhensan
  • 浏览: 369575 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java 异常

    博客分类:
  • java
 
阅读更多

 

package exception;

public class test3 {

	public static void main(String[] args) {
		new test3().t3();
	}

	void t1() {
		int i = 1 / 0;
	}

	void t2() {
		try {
			t1();
		} catch (Exception e) {
			throw new RuntimeException("异常信息2", e);
		}

	}

	void t3() {
		try {
			t2();
		} catch (Exception e) {
			throw new RuntimeException("异常信息3", e);
		}
	}

}

 

 

Exception in thread "main" java.lang.RuntimeException: 异常信息3

at exception.test3.t3(test3.java:26)

at exception.test3.main(test3.java:6)

Caused by: java.lang.RuntimeException: 异常信息2

at exception.test3.t2(test3.java:17)

at exception.test3.t3(test3.java:24)

... 1 more

Caused by: java.lang.ArithmeticException: / by zero

at exception.test3.t1(test3.java:10)

at exception.test3.t2(test3.java:15)

... 2 more

 

顺序是有表-内 最后的才是问题的根源

 

如果程序没有处理异常,当前线程会有个方法,来有JVM调用处理

java.lang.Thread.dispatchUncaughtException(Throwable) 这个方法是private

 

 

package exception;


public class test2 {

	public static void main(String[] args) {
		System.out.println("11111111111111111111111111111111111111111111111111111111");
		System.err.println("2222");
	}

}

 

 

多次执行程序有的时候222会先打印出来

说out err 这两个流的处理应该是异步的

 

 

 

整个项目的异常处理要统一规划,打印的错误信息要慎重考虑,为了系统上线后可以快速的锁定问题

不建议:又打印日志,有往外抛出异常,这样会有很多重复的异常堆,异常堆会很乱

 

原则:

具体明确

提早抛出

延迟捕获

 

目标:

什么出了错?

在哪出的错?

为什么出错?

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics