一个奇异的java异常捕获的问题

温佐镜 发布于 2014/04/10 21:36
阅读 231
收藏 0

现上测试代码

public class App {
	
	private static App app  ;
	
	static {
	
		app = new App() ;	
		
	}
	
	public App(){
		throw new RuntimeException() ;
	}	
	
	
	public static void say(){
		
		System.out.println("Hi");
	}
}



public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try{
			App.say() ;
			
		}catch(Exception e ){
			System.out.println("+++++++++++++++++++");
		}
		System.out.println("-----------------");
		App.say() ;
		

	}

}


疑惑:Exception的catch块居然没有捕获到RuntimeException的异常,这很不正常呀!把Exception换成Throwable又可以,这是为什么呢?


以下是问题补充:

@温佐镜:突然开窍了,原来第一次加载类时,初始静态块失败回抛出ExceptionInInitializerError,而ExceptionInInitializerError不时Exception的子类。 (2014/04/10 22:10)
加载中
0
南湖船老大
南湖船老大

我只记得runtime exception是不受捡异常,不需要在程序中手动抛出,JVM会自动捕获的。至于你说的为什么你这里手动捕获了,但捕获不到,你确定?

0
excepiton
excepiton
类加载不了,是否抛error而不是exception
返回顶部
顶部