javaSE学习:异常

异常

error和exception

五个关键字

try,catch,finally,throw,throws;

try //监控区域

catch //(捕获异常的类型)捕获异常

finally //处理善后工作,无论有没有异常都执行

 public class Demo {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
         try {
             System.out.println(a/b);
        } catch (Exception e) {
             System.out.println("b不能为0");
        } finally {
             System.out.println("finally");
        }
 ​
    }
 }

javaSE学习:异常

快捷键 选中要执行异常的代码,ctrl+alt+t

当有多个catch要执行时,异常的大小要从小到大

 public class Demo {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
         try {
             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");
        }
 ​
    }
 }
 ​

javaSE学习:异常

 //栈溢出报错
 public class Demo {
     public static void main(String[] args) {
         int a = 1;
         int b = 0;
         try {
             new Demo().a();
        } 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");
        }
 ​
    }
     public void a(){b();}
     public void b(){a();}
 }

javaSE学习:异常

throw //主动抛出异常,一般在方法中使用

 public class Demo {
     public static void main(String[] args) {
         new Demo().test(1, 0);
    }
 ​
         public void test(int a,int b){
             if (b == 0) {
                 throw new ArithmeticException();//主动抛出一个异常
            }
             System.out.println(a/b);
        }
 ​
 }

javaSE学习:异常

 

上一篇:FreeMarker-Built-ins for numbers


下一篇:returnException