异常机制
什么是异常?
简单分类
异常体系结构
Error
Exception
异常出来机制
-
抛出异常
-
捕获异常
-
异常处理五个关键字
try、catch、finally、throw、throws
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//快捷键 Ctrl+Alt+T
//假设要捕获多个异常:从小到大
try { //try监控区域
//new Test().a();
System.out.println(a/b);
}catch(ArithmeticException e) { //catch 异常捕获
System.out.println("除数不能为0");
}catch (Exception e){
System.out.println("Exception,异常");
}catch (Throwable e){
System.out.println("Throwable");
}
finally { //处理善后工作
System.out.println("程序结束");
}
//finally 可以不要finally,假设IO,资源,关闭!
}
public void a(){
b();
}
public void b(){
a();
}
}
public class Test2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
//快捷键 Ctrl+Alt+T
try {
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace(); //打印错误的栈信息
} finally {
}
}
//假设在方法中,处理不了这个异常,方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
if (b==0){
//主动的抛出异常,一般在方法中使用
throw new ArithmeticException("除数不能为0");
}
}
}
自定义异常
//自定义的异常类
public class MyException extends Exception{
//传递数字>10
private int detail;
public MyException(int a) {
this.detail = a;
}
//toString:异常的打印信息
@Override
public String toString() {
return "MyException{" +
"detail=" + detail +
'}';
}
}
public class Test1 {
//可能会存在异常的方法
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(11);
} catch (MyException e) {
//增加一些处理异常的代码~
System.out.println("MyException:"+e);
}
}
}