基础概念
Error:指的是JVM运行时的错误,这时的程序并没有执行。
Exception:指的是程序运行过程中产生的异常,用户可以使用异常处理格式进行处理
异常处理的基本格式
java中异常处理的基本格式:
(1)try catch finally 如果try中产生异常,则到catch中匹配对应的异常,然后进行相应的处理。
(2)不管程序是否发生异常finally语句块都会执行。 finally可以省略不写
(3)catch()块运行完之后,程序继续向下走。
备注:异常处理过程中捕获范围小的异常要放在捕获返回大的异常之前处理。
throws 与 throw
throws:表明当前方法不处理异常,异常处理交给调用者。
public static int div(int a ,int b) throws Exception{// 此方法不处理异常
return a/b;
}
throw:方法中可以人为的抛出一个异常类型对象,这个异常类对象可以是自己实例化也可以是已存在的。
RuntimeException 类
RuntimeException异常(也叫非检查异常):程序编译过程不强制要求用户处理,用户可以根据自己的需要选择性处理,如果没有处理又发生了异常。将交给JVM默认处理。
备注:定义了Exception的异常(也叫检查异常)必须要处理的。
自定义异常
依据实际项目中用到业务异常为例--》说明自定义使用方式
/**
* @Title TechBizRuntimeException.java
* @Description TODO
* 业务运行时异常,所有业务异常均要继承此异常
* @author willard
* @date 2018年4月29日 下午4:59:01
* @version V1.0
*/
public class BaseBizException extends Exception{
/**
* @Fields serialVersionUID : TODO
*/
private static final long serialVersionUID = 1L;
/**
* 异常码
* @Fields defineCode : TODO
*/
protected String defineCode;
/**
* 异常信息:可以包含必要的上下文业务信息
* @Fields message : TODO
*/
protected String message;
/**
* <p>Title: </p>
* <p>Description: 构造函数初始化message </p>
* @param message
*/
protected BaseBizException(String message) {
this.message = message;
}
/**
* <p>Title: </p>
* <p>Description: </p>
* @param defineCode 异常码
* @param message 异常消息
*/
protected BaseBizException(String defineCode,String message){
this.defineCode = defineCode;
this.message = message;
}
public void setMessage(String message, Object... args) {
this.message = MessageFormat.format(message, args);
}
public String getMessage() {
return message;
}
public String getDefineCode() {
return defineCode;
}
}
/**
*
* @Title MifException.java
* @Description
(1)异常定义要有明确的编码,文字描述以及配置化参数
* (2)不同大类的异常首字母不同
* @date 2017年10月29日 下午8:24:24
* @version V1.0
*/
public class BizException extends BaseBizException {
private static final long serialVersionUID = 1L;
/**
* eg:业务异常
*/
public static BizException BUSSINESS_ERRPR = new BizException("100001", "{0}");
protected BizException(String defineCode,String msg) {
super(defineCode,msg);
}
public BizException newInstance(Object... params){
BizException txpe = new BizException(this.defineCode,this.message);
txpe.setMessage(this.message, params);
return txpe;
}
public static void main(String[] args) throws BizException {
throw BizException.BUSSINESS_ERRPR.newInstance("自定义异常信息");
}
}