学习异常处理-多异常捕捉和访问异常信息

/**
三 多异常捕捉(java7开始一个catch块可以捕捉多种类型的异常)
    1 多个异常用'|'竖线隔开
    2 捕捉多种类型的异常,异常变量有隐式的final修饰,因此不可以对异常变量重新赋值.
    3 多种类型的异常之间不可存在父子关系
        正常 catch(ClassCastException |  IndexOutOfBoundsException |NumberFormatException e ){}
        报错 catch(Exception | ClassCastException |  IndexOutOfBoundsException |NumberFormatException e ){}

四 访问异常信息(只能在catch块中通过异常对象来访问异常信息)
 所有的异常对象都给包含了如下方法
               String getMessage() 返回该异常对象的详细描述信息
                void  printStackTrace() 将该异常的跟踪栈信息输出到标准错误输出
                void  printStackTrace(PrintStream ps) 将该异常的跟踪栈信息输出指定输出
 StackTraceElement[]  getStackTrace() 返回该异常的跟踪栈
*/
public class 异常处理 {
    public static void main(String[] args) throws IOException {
        for (int i = 0; i < 100; i++) {
            try {
                if (i  == 0) throw new ClassCastException("输出类型转换异常ClassCastException");
                if (i == 1) "".substring(1);
                if (i == 2) throw new NumberFormatException("抛出了数字格式异常,吃饭了^-^");;

            }catch(ClassCastException |  IndexOutOfBoundsException |NumberFormatException e ){
//                e = new StringIndexOutOfBoundsException(); //对异常变量重新赋值报错
                System.out.println(e.getMessage());//使用了getMessage方法
//                e.printStackTrace();//调用printStackTrace如果没有修改标准输出节点,则默认为控制台console,运行该代码你不要以为报错了,哈哈
                //创建物理节点log.txt
                var file = new java.io.File("./log.txt");
                file.createNewFile();
                //如下修改标准输出节点为当前目录的log.txt文件,即将异常跟踪栈信息输出到log.txt文本文件
                e.printStackTrace(new PrintStream(file));
                continue;
            }
            //多种类型的异常之间不可存在父子关系,比如下面这种报错
//            catch(Exception | ClassCastException |  IndexOutOfBoundsException |NumberFormatException e ){
//            System.out.println(e);
//            continue;
//           }
        }
    }

}
 

运行结果入下:

输出类型转换异常ClassCastException
String index out of range: -1
抛出了数字格式异常,吃饭了^-^

如下重定向输出异常对象的跟踪栈信息到log.txt文件里

posted @ 2022-05-17 16:41  -和时间赛跑-  阅读(61)  评论(0编辑  收藏  举报