异常机制
捕获和抛出异常
//异常快捷键 Ctrl + Alt + T
package com.exception;
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//如果需要捕获多个异常,从小到大!
try{//监测异常
new Test().a();
}catch (ArithmeticException e){//捕获异常
System.out.println("捕获到异常,除数不能为0");
}catch (Error e){//捕获异常
System.out.println("Error");
}catch (Throwable e){//捕获异常
System.out.println("Throwable");
}finally {//处理善后工作
System.out.println("finally");
}
//finally可以不要,假设需要关闭IO,或者需要关闭资源时,在finally代码块中
}
public void a(){
b();
}
public void b(){
a();
}
}
public class Test2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {
new Test2().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
// 假设在方法里面处理不了这个异常,在方法上抛出异常
public void test(int a ,int b) throws ArithmeticException{
if (b==0){
//主动抛出异常 throw throws
throw new ArithmeticException();//主动抛出异常.一般在方法中使用
}
// System.out.println(a/b);//异常快捷键 Ctrl + Alt + T
}
}
package com.exception.demo02;
//自定义异常
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 +
'}';
}
}
package com.exception.demo02;
public class Test {
//可能会存在异常的方法
static void test(int a) throws MyException {
System.out.println("传递的参数为"+a);
if (a>10){
throw new MyException(a);//alt + enter抛出
}
System.out.println("OK");
}
public static void main(String[] args) {
try {
test(11);
} catch (MyException e) {
//增加一些处理异常的代码
System.out.println("MyException=>"+e);
}
}
}