Java自定义异常处理

错误、异常结构

Throwable
    error//无法通过程序弥补的

    Exception//可以通过调试来处理的
        runtime//运行时才会发生的
        check//错不错误都要进行异常捕获的

异常处理要点

1
2
3
4
5
6
7
8
9
10
11
12
13
 throws 声明异常,让别人去捕获,谁调用这个放谁就要去捕获或者继续扔给下一个方法调用者
throw 手动抛出异常

//最常用的显示异常的方法
e.printStackTrace();
//显示的内容比较针对的
System.out.println(e.getMessage());
//分类获取,多重try catch
//多重try catch在使用时要注意异常的范围问题
//范围小的放前面,级别相同就无所谓了

执行了return语句,finally子语句仍然会被执行
执行了System.exit(0),finally子语句和其后所有语句将不执行

自定义异常实例

自定义异常

1
2
3
4
5
6
7
8
9
10
public class IntegerException extends Exception{
String message;
public IntegerException(int m){
message="年龄"+m+"不合理";
}
@Override
public String toString() {
return message;
}
}

实体类声明、抛出异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class People {
private int age=1;
public void setAge(int age) throws IntegerException{
if(age>=160||age<0){
throw new IntegerException(age);
}else{
this.age=age;
}
}
public int getAge(){
System.out.println("年龄"+age+"合理");
return age;
}
}

测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Example {
public static void main(String[] args) {
People wang=new People();
People zhang=new People();
try {
wang.setAge(180);
System.out.println(wang.getAge());
} catch (IntegerException e) {
System.out.println(e.toString());
}
try {
zhang.setAge(37);
System.out.println(zhang.getAge());
} catch (IntegerException e) {
System.out.println(e.toString());
}
}
}
0%