异常处理
异常处理机制
代码
-
public class Demo01 { public static void main(String[] args) { int a = 1; int b = 0; //假如要捕获多个异常:从小到大! try { if (b==0){//throw throws(在方法中抛出) throw new ArithmeticException();//主动抛出异常 } System.out.println(a/b); }catch (Error e){ System.out.println("Error"); }catch (Exception e){ System.out.println("Exception"); }catch (Throwable t){ System.out.println("Throwable"); }finally {//处理善后工作 System.out.println("finally"); } //finally 可以不要finally. } public void a(){b();} public void b(){a();} }
-
public class Test { public static void main(String[] args) { int a = 1; int b = 0; //选中语句ctrl + alt + T,套用try catch finally try { System.out.println(a/b); } catch (Exception e) { e.printStackTrace();//打印错误的栈信息 } finally { } } }
-
public class Test2 { public static void main(String[] args) { try { new Test2().test(1,0); } catch (ArithmeticException e) { e.printStackTrace(); } } //假设方法中,处理不了这个异常,可使用throws在方法上抛出异常 public void test(int a,int b) throws ArithmeticException{ if (b==0){ throw new ArithmeticException();//主动抛出异常,一般在方法中使用 } } }
自定义异常作用:可以使程序在抛出异常后仍然可以正常运行,处理潜在的程序异常和漏洞。
代码
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 Test3 {
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);
}
}
}