捕获处理异常vs抛出异常

捕获异常,可以由程序员自行对出现的异常进行处理
抛出异常,程序运行过程中产生的异常递交给虚拟机,由虚拟机进行处理,异常的处理程序员无法干预
 
捕获处理异常案例:
package hh;

public class JavaThrows {
	public void calc(byte k)throws Exception{//抛出异常
		byte y=1,i=1;
		System.out.print(k+"!=");
		//求整数的阶乘,一旦计算后的数值大于某个值,则认为“溢出”
		for(i=1;i<=k;i++) {
			if(i*y>Byte.MAX_VALUE)
				throw new Exception(" 溢出");
			else
				y=(byte)(y*i);
		}
		System.out.println(y);
	}
	public void run(byte k) {//捕获并处理异常
		try {
			calc(k);
		}
		catch(Exception e) {
			System.out.println("异常:"+e.getMessage());
			e.printStackTrace();
			System.exit(0);
		}
	}
	public static void main(String args[]) {
		JavaThrows a=new JavaThrows();
		for(byte i=1;i<10;i++)
			a.run(i);
	}

}
运行截图如下:



关于异常捕获处理

03-18

第一次靠自己慢慢解决问题,再此做做笔记,各位大牛请多多指教。rn先来描述问题,我的逻辑层里面包含多次对DB的操作rn初次代码如下:rn@Overridern public int register(UserInfo userInfo, CarInfo carInfo) rn log.info("register() enter"); rn try rn sqlDao.create("CarInfo.insert", carInfo);rn sqlDao.create("UserInfo.insert", userInfo);rn UserCarInfo userCarInfo = new UserCarInfo();rn userCarInfo.setId(SerialNo.getSmallUNID());rn userCarInfo.setOpenId(userInfo.getOpenId());rn userCarInfo.setUserInfoId(userInfo.getId());rn userCarInfo.setCarInfoId(carInfo.getId());rn return sqlDao.create("UserCarInfo.insert",userCarInfo);rn catch (Exception e) rn log.info("注册时异常",e);rn return 1;rn rn rn修改后代码:rn@Overridern public int register(UserInfo userInfo, CarInfo carInfo) rn log.info("register() enter"); rn try rn sqlDao.create("CarInfo.insert", carInfo);rn sqlDao.create("UserInfo.insert", userInfo);rn UserCarInfo userCarInfo = new UserCarInfo();rn userCarInfo.setId(SerialNo.getSmallUNID());rn userCarInfo.setOpenId(userInfo.getOpenId());rn userCarInfo.setUserInfoId(userInfo.getId());rn userCarInfo.setCarInfoId(carInfo.getId());rn return sqlDao.create("UserCarInfo.insert",userCarInfo);rn catch (Exception e) rn log.info("注册时异常",e);rn throw new RuntimeException("注册时异常", e);rn rn rn总结问题:初始代码,捕获了异常并吃掉了,导致spring以为不存在异常,所以它的事务处理没有起作用;rn修改代码后将异常抛出,spring的事务处理起作用。rn[code=java][/code]rn另外分享一个关于异常处理的链接: http://www.ibm.com/developerworks/cn/java/j-lo-exception-misdirection/rnrnrn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试