探讨throw、throws 、try/catch 作用区别

本文通过一个具体的Java示例,详细解析了异常处理机制的工作流程。包括如何声明可能抛出的异常,如何在方法中抛出异常,以及如何在调用者处捕获并处理这些异常。文中还探讨了不同类型的异常如何影响程序执行流程。
class Test {

	static void throwOne() throws SQLException, IllegalAccessException  {

		System.out.println("Inside throwOne.");

		throwTwo();
		throw new SQLException("sql");
	}
	
	static void throwTwo() throws IllegalAccessException  {

		System.out.println("Inside throwTwo.");
		throw new IllegalAccessException("demo");
	}
	
	public static void main(String args[]) {

		
				
					try {
						throwOne();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IllegalAccessException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				
				
		

	}
}

 throws 是抛出异常,try{...}catch{...}是捕获、处理异常
      在throwOne()中,会抛出SQLException,throwOne()不会处理SQLException,他会抛出,由调用她的main方法
来处理,在main方法中,由try语句块,捕获throwOne方法中抛出的异常,并由catch语句块进行处理。又,在throwOne
方法中调用了throwTwo方法,throwTwo抛出了IllegalAccessException 异常,这个IllegalAccessException 由调用他
的throwOne进行处理,而throwOne中没有对IllegalAccessException 进行处理的办法,不能处理,所以继续抛给调用他
的main方法,main会对IllegalAccessException 异常进行捕获和处理。
       上面的例子是只能捕获到IllegalAccessException 异常,而捕获不了SQLException的,因为throwTwo抛出异常后,

throwOne也奖抛出IllegalAccessException 异常,语句不继续执行,没有抛出SQLException。
static void throwTwo() throws IllegalAccessException  {

  System.out.println("Inside throwTwo.");
  //throw new IllegalAccessException("demo");
 }

 如果将throwTwo中的第二行代码注释掉,将不再抛出IllegalAccessException,从而SQLException将会被main捕获处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值