java如何自定义一个可捕获的异常
答案:2 悬赏:70
解决时间 2021-01-07 23:58
- 提问者网友:人生佛魔见
- 2021-01-07 05:32
java如何自定义一个可捕获的异常
最佳答案
- 二级知识专家网友:动情书生
- 2021-01-07 07:10
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());
}
}
}
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());
}
}
}
全部回答
- 1楼网友:从此江山别
- 2021-01-07 07:36
首先自定义一个异常类
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 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它的自定义异常,但是程序依然可以捕获的到
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 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它的自定义异常,但是程序依然可以捕获的到
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯