创建自定义异常的注意事项
1、用户自定义异常都是运行时异常,继承Exception类
2、需提供serialVersionID
3、通过throw手动抛出,抛出的是异常对象,每次只抛一个
4、至少定义两个构造方法:无参的构造方法,带String对象参数的构造方法
举例
import java.util.Scanner;
public class RegisterException extends Exception{
static final serialVersionUID=34897193246939;
public RegisterException(){
}
public RegisterException(String msg){
super(msg);
}
}
public class UserRegisterTest{
public void regist(int num) throws RegisterException{
if(num<0){
throw new RegisterException("注册编号为负,不合理");
}else{
System.out.println("注册编号为:"+num);
}
}
public static void main(String[] args) {
UserRegisterTest t = new UserRegisterTest();
Scanner scn = new Scanner(System.in);
System.out.println("请输入要注册的用户编号为:");
int ID = scn.nextInt();
try{
t.regist(ID);
}catch(RegisterException e){
e.printStackTrace(null);
}
}
}
异常处理代码块嵌套
通常没有必要使用超过两层的嵌套异常处理,层次太深的嵌套处理会导致可读性降低
public static void main(String[] args){
try {
//A
try {
//B
} catch (Exception e) {
//C
// TODO: handle exception
}finally{
//D
}
} catch (Exception e) {
//F
// TODO: handle exception
}finally{
//G
}
}