• java基础(12)---异常


    一、throws和throw

    用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。

    区别:

      1、概念

    • throws E1,E2,E3只是告诉程序这个方法可能会抛出这些异常,方法的调用者可能要处理这些异常,而这些异常E1,E2,E3可能是该函数体产生的。
    • throw则是明确了这个地方要抛出这个异常。

    2、位置

    • throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
    • throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。

      3、通俗说法:

    • throws说明你有那个可能,倾向。
    • throw的话,那就是你把那个倾向变成真实的了。

    格式:

    1.1   throw是语句抛出一个异常。

    语法:throw (异常对象);

             throw e;

    1.2   throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)

    语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}

                public void doA(int a) throws Exception1,Exception3{......}

    例子:

     void doA(int a) throws IOException,{
               try{
                     ......
               }catch(Exception1 e){
                  throw e;
               }catch(Exception2 e){
                  System.out.println("出错了!");
               }
               if(a!=b)
                  throw new  Exception3("自定义异常");
    }
    
    //代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。
    
    //如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
    
    //如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。
    
    //而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。

    摘自:https://www.cnblogs.com/jxldjsn/p/10444538.html

    二、try和catch

    使用 try 和 catch 关键字可以捕获异常。

     try-catch和throws的区别:

    •     try-catch : 在当前位置处理异常
    •     throws    : 向上抛出异常,可以无限向上抛出,直到抛给main方法,main方法就抛给JVM虚拟机去解决

    即比如在3个类中,第3个类出现异常,可向上抛给第二个类,第二个类如果不想解决,可继续抛给第一个类中去解决,然后在第一个类中(调用第三个类中方法会出现异常)==》就使用try-catch解决异常


    相当于throws可以向上指定抛到某一个类里面去集合解决异常(使用try-catch解决异常),而try-catch是直接处理异常

    三、异常:

    IllegalArgumentException:表明向方法传递了一个不合法或不正确的参数

  • 相关阅读:
    pycharm中报错:ImportError: No module named 'skimage'
    pycharm 怎么能像在命令行中输入参数进行调试
    python在pycharm中导包一直出错的问题
    安装tensorflow遇到:Your CPU supports instructions that this TensorFlow binary was not compiled to use
    curses is not supported on this machine:(curses 在pycharm(Windows)中的安装 )
    python 2 和python 3 中的编码对比
    用python 遍历文件夹中所有.dcm文件
    pycharm 安装 tensorflow
    如何在Eclipse中写Processing的sketch
    Random Target Moving~
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/11627856.html
Copyright © 2020-2023  润新知