异常机制

p81 异常的分类

 

 

 

 try和throw ,throws

import java.io.*;
public class Teat1 {
    public static void main(String[] args){
        TestEat T = new TestEat();
        try{
            System.out.println(T.eat());//可能出现异常的对象
        }catch(Exception E){//接收异常对象的引用,遵循多态的向上转型
            E.printStackTrace();//打印栈堆里的异常对象的路径路径,打印出来后遵循栈的先进后出原则
            System.out.println("运算异常");
        }
        try{
             new IOException();
        }catch(Exception exception){
            exception.printStackTrace();
            System.out.println("Exception必须处理的异常");
        }
        System.out.println("你好java");
    }
}
class TestEat {
    int eat(){
        int m = 0;
        int b = 0;
        int c = 4;
        m = c/0;
        return m;
    }

}
class trows{
    void cat() throws IOException{//抛给栈里面的该函数的上一级调用函数来处理,甩锅
        throw new IOException();//必须要处理的异常机制,属于Exception的子类,编译不通过
    }
    void dog(){
        throw new RuntimeException();//运行时异常,可以不处理的异常,编译通过运行不通过
    }
}


 Finally

 

 

 自定义异常和throws常见错误解析

 

 

 

 

public class TeatArray {
    public static void main(String[] args){
       Array A = new Array();
       try {
           A.arr(6);
       }catch(Exception E){
           E.printStackTrace();
       }
    }
}
class ArrayException extends Exception{
        ArrayException(String name){
            super(name);
        }
}
class Array{
    void arr(int len) throws ArrayException{
        int len1 = len;
     int[]arr = {1,2,3,4};
        if(len1<arr.length&&len1>0){
     for(int i = 0;i<len1;i++){
         System.out.println(arr[i]);
     }
    }else{
            throw new ArrayException("数组越界");
        }
    }
}

 运行结果:

 

posted @ 2022-02-09 17:24  iiuu也一样  阅读(27)  评论(0编辑  收藏  举报