美文网首页
Java 异常处理——声明、抛出异常

Java 异常处理——声明、抛出异常

作者: Wpcc | 来源:发表于2022-03-21 13:33 被阅读0次

    声明检查类型异常 throws

       概述:如果一个方法可能会出现异常,但我们不想使用try..catch 精准捕捉处理异常,只想模糊处理,可以在方法声明处用throws子句来声明抛出异常。其实程序默认的报错方式就是抛出。

       例如:如果我们需要读取一份文件,但是有可能读取的文件不存在,或者内容为空,所以我们需要告诉编译器可能会出现FileNotFoundException类异常

    public FileInputSteam(String name) throws FileNotFoundException,ArrayIndexOutOfBoundsException // 可以抛出多个异常
    
    1. 注意:子类抛出的异常必须与父类一致,或者是父类异常的子类。

    2. 注意:throws 会将异常抛给调用的语句块。比如 f1( )方法里面抛出了FileNotFoundException异常,若 f2( )方法调用 f1( )方法,f2( )方法就得处理f1( )方法里面抛出的FileNotFoundException异常。前提是这个异常是 检查型/运行时异常,非检查型异常不报错,因为非检查型异常本身就默认有检查方式抛出。

      • 处理方式
        • f2( )方法也抛出FileNotFoundException异常
        • f2( )方法使用try..catch捕捉异常

    抛出异常 throw

      抛出异常很简单,抛出后就不用管了

    • throw 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。注意与 throws 的区别
    • 首先要决定抛出什么异常,比如 throw new IOException
    • 也可以是 var e = new IOException( ) ; throw e ;

    创建自定义异常类

    • 概述:如果遇到现有任何标准异常类都无法描述清楚的问题,这种情况下就需要创建一个属于自己的异常类了。
    • 如何:我们要做的就是定义一个派生于Exception 的类,或者子类,比如IOException。
      • 超类Throwable 的 toString 会返回字符串,很好用
      • 创建异常类应该包含两个构造器,一个是默认的构造器,一个是包含详细描述信息的构造器。
    //创建自定义异常类
    class FileFormatException extend IOException{
        public FileFormatException(){}  // 默认的构造器
        public FileFormatException(String gripe){  // 详细描述信息的构造器
            super(gripe);
        }
    }
    
    // 抛出自定义异常类
    String readData(Buffered in) throws FileFormatException{
        ......
        while(...){
            if (. . .){
                throw new FileFormatException();
            }
          ......
        }
        return ...;
    }
    

    相关文章

      网友评论

          本文标题:Java 异常处理——声明、抛出异常

          本文链接:https://www.haomeiwen.com/subject/ouxtjrtx.html