java如何自定义一个可捕获的异常

通常我们在java中自定义异常后,总是先throwsException,然后在转成我们自定义的异常。如下publicvoidtestException()throwsEx... 通常我们在java中自定义异常后,总是先throws Exception,然后在转成我们自定义的异常。如下
public void testException () throws Exception{
try{
throw new Exception();
}catch(Exception e){

throw new DAOException();

}
}
这样感觉有些麻烦,如果我想构造一个异常链,Dao层抛出了异常,service层还要做判断,相当的麻烦,感觉性能很差。
能不能我直接就抛出 我自定义的DAOException,然后上层方法也能捕获的到。很多框架都有自定义的异常,可以直接抛出。如Spring的DataAccessException,这是怎么实现的呢?
展开
 我来答
woaishuimunian
2015-07-25 · TA获得超过301个赞
知道小有建树答主
回答量:650
采纳率:60%
帮助的人:47.2万
展开全部

1)先定义一个类继承Exception(或者别的RuntimeException等);

2)然后写个方法可能抛出这个异常,并且什么情况下会抛出异常;

3)调用这个方法,写try,catch语句,捕获这个异常;

小例子,你参考看下:

class UserNotFoundException extends RuntimeException {
public UserNotFoundException() {}

public UserNotFoundException(String message) {
super(message);
}
public void f() throws UserNotFoundException {
throw new UserNotFoundException("用户名不对");


}

public class Exception  {
public static void main(String args[]) {
try {
new UserNotFoundException().f();
} catch (UserNotFoundException e) {
System.out.println(e.getMessage());
}
}
}
Peng_太阳光
2014-07-26
知道答主
回答量:8
采纳率:0%
帮助的人:2.7万
展开全部
首先自定义一个异常类
public class ActionException extends Exception{
public String returnMessage;
public ActionException(String returnMessage){
this.returnMessage = returnMessage;
}
public String getReturnMessage(){
return this.returnMessage;
}

代码中如果用到这个自定义的异常类,这里的代码只是做了个演示
private void validate(int a,int b)throws ActionException{
if(a>b){
throw new ActionException("a > b");
}
if(a<b){
throw new ActionException("a < b");
}
}

业务逻辑代码中
public String process(){
try{
validate(a,b);
}catch(ActionException ae){
System.out.println(ae.getReturnMessage());
}
}
追问
你这样的写法,针对一种业务逻辑,在程序中判断手动的去抛异常
假设validate()方法,出现了其他异常,上层就没法捕获了

我想要的是,假设我自定义了一个BusinessException为业务异常,它可以程序中处理所有的业务层异常,功能几乎可以等价于RunTimeException
就像一些开源框架中的自定义异常,我并没有显示的throw或者是throws它的自定义异常,但是程序依然可以捕获的到
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式