java错误抛出时间顺序

java异常抛出时间顺序

1、当前方法抛出异常时(交给java虚拟机执行异常处理)

public class ExceptionTest5 {
	public void method(String str) throws MyException{
		if(str == null){
			throw new MyException("传入的字符串参数不能为null");
		}
		else{
			System.out.println(str);
		}
	}
	
	/*
	 * 根据多态,也可以抛出 Exception类型的异常: 
	 * 1) throws Exception
	 * 2) 捕获也可以这样写 catch(Exception e)
	 */
	public static void main(String[] args) throws MyException{
		
		try{
			ExceptionTest5 test = new ExceptionTest5();
			test.method(null);
		}catch(MyException e){
			e.printStackTrace();
		}
		finally{
			System.out.println("异常处理完毕");
		}
		System.out.println("程序执行完毕");

	}
}

执行结果为:

异常处理完毕 

程序执行完毕 

com.ahuier.exception.MyException: 传入的字符串参数不能为null at com.ahuier.exception.ExceptionTest5.method(ExceptionTest5.java:6) at com.ahuier.exception.ExceptionTest5.main(ExceptionTest5.java:22)

2、当前方法不抛出异常


public class ExceptionTest5 {
	public void method(String str) throws MyException{
		if(str == null){
			throw new MyException("传入的字符串参数不能为null");
		}
		else{
			System.out.println(str);
		}
	}
	
	/*
	 * 根据多态,也可以抛出 Exception类型的异常: 
	 * 1) throws Exception
	 * 2) 捕获也可以这样写 catch(Exception e)
	 */
	public static void main(String[] args) {
		
		try{
			ExceptionTest5 test = new ExceptionTest5();
			test.method(null);
		}catch(MyException e){
			e.printStackTrace();
		}
		finally{
			System.out.println("异常处理完毕");
		}
		System.out.println("程序执行完毕");

	}
}

执行结果:
com.ahuier.exception.MyException: 传入的字符串参数不能为null
at com.ahuier.exception.ExceptionTest5.method(ExceptionTest5.java:6)
at com.ahuier.exception.ExceptionTest5.main(ExceptionTest5.java:22)
异常处理完毕
程序执行完毕