什么是异常

简单分类

异常体系结构

Error

Exception

异常处理机制

try、catch、finally

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package com.exception;

public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;

//假设要捕获多个异常:从小到大!

try{//try监控区域
System.out.println(a/b);
}catch(Error e){//catch(想要捕获的异常类型) 捕获异常
System.out.println("程序出现异常,变量b不能为0");
}catch(Exception e){

}catch (Throwable t){

} finally{//处理善后工作
System.out.println("finally");
}
//finally 可以不要finally,假设IO,资源,关闭!
}
}

选中后摁快捷键:Ctrl+Alt+T


throw、throws

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.exception;

public class Test {
public static void main(String[] args) {
new Test().test(1,0);
}

//假设这方法中,处理不了这个异常。方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
if (b==0){// throw throws
throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
}
}
}

自定义异常

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package com.exception.demo01;

public class Test {

//可能会存在异常的方法
static void test (int a) throws MyException{
System.out.println("传递的参数为:"+a);
if (a>10){
throw new MyException(a);//抛出
}
System.out.println("OK");
}

public static void main(String[] args) {
try {
test(1);
} catch (MyException e) {
System.out.println("MyException=>"+e);
}
}
}

/*
package com.exception.demo01;

//自定义的异常类
public class MyException extends Exception{
//传递数字>10;
private int detail;

public MyException(int a) {
this.detail = a;
}

//toString:异常的打印信息
@Override
public String toString() {
return "MyException{" + detail + '}';
}
}
*/

实际应用中的经验总结