现在的位置: 首页 > 综合 > 正文

关于异常的处理方式

2013年10月13日 ⁄ 综合 ⁄ 共 1600字 ⁄ 字号 评论关闭
package com.cebbank.doa.exception;


import org.apache.log4j.Logger;
import com.cebbank.doa.util.StringUtil;

/**
 * 关于异常的处理方式
 * 		异常处理是在做Java开发中必不可少的。但不同的人处理异常的方式也不一样。
 * 		我处理异常的方式概括为:一切方法都有未知异常,有异常我们就要抛出。
 * 		其实我们可以写这么几个异常类,代表不同的异常类型,当一个地方出现异常时,
 * 		我们就抛出该类型错误。这样其实是挺不错的。现在这个类没这么做,只是演示
 * 		下我处理异常的思路。
 * 
 * 关于异常我认为:
 * 		虽然在书面上讲异常的分类有'编译期异常'和'运行时异常'等,我对这些理论不是
 * 		特别熟悉,但我知道比如像IO类操作的时候必须要加try和catch才能编译通过,这
 * 		些异常就是编译期异常,而像数组下标越界异常空指针异常就属于运行时异常。
 * 
 * 		在运行时异常里,很多程序员不去处理而是直接抛出。交给虚拟机接管。我觉得这
 * 		是不靠谱的。当程序发生了这些错误的时候,我不清楚如何让用户得到反馈信息,
 * 		同时程序开发人员维护也是找不到依据。所以在我看来:每一段程序其实有可能发
 *		生异常,所以我们都需要去try和catch,如此当出现异常时,我们才能准确定位
 *		异常发生的地点和位置。
 * 		
 * @author lvpeng
 * @date 2012-11-08
 */
public class ExceptionTest {
	static Logger log = Logger.getLogger(ExceptionTest.class);
	
	public static void main(String[] args) {
		try {
			System.out.println(doException(6));
		} catch (Exception e) {
			String message = e.getMessage().replace("java.lang.RuntimeException: ","");
			if(e.getMessage().contains("false")){
				System.out.println(StringUtil.getMsg(message));
			}else{
				System.out.println(message);
			}
		}
	}
	
	/* *
	 * 测试方法
	 */
	public static String doException(int i){
		String result = "";
		try {
			//假设程序运行到以下几个地方的时候都可能出现异常,这个时候我们就要主动抛出。
			if(i == 1){
				throw new RuntimeException("{success:'false',msg:'异常信息:i不能等于1'}");
			}else if(i == 2){
				throw new RuntimeException("{success:'false',msg:'异常信息:i不能等于2'}");
			}else if(i == 3){
				throw new RuntimeException("{success:'false',msg:'异常信息:i不能等于3'}");
			}else{
				//关于1除以i这段程序,我们就可以认为是可能发生异常的,比如当i=0的时候就会报by zero异常。
				//所以我们有必要加try和catch
				try {
					result = String.valueOf(5*i);
//					System.out.println("5*"+i+"的结果是:"+result);
				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		} catch (Exception e) {
//			log.error("xxx功能异常:"+e);
			throw new RuntimeException(e);
		}
		return result;
	}
}

抱歉!评论已关闭.