• 异常


    Java-------异常处理

    try{}catch(){Exception e}finally{}

    异常的概念:Exception所谓异常就是程序运行过程中出现了意料之外的情况。

    Error:错误,无需处理。比如:断电
    Exception:异常,需要处理和捕获的

    非检查异常(非受检异常、未检查异常):可以避免 不强制必须处理
    检查异常(受检异常、已检查异常):不可避免 必须进行异常处理,否则无法通过编译

    1.1非检查异常(非受检异常、未检查异常)

            可以避免,可以编译,但运行时抛出异常


    如:ArithmeticException 算术异常
      ArrayIndexOutOfBoundsException 数组下标越界异常
      NullPointerException 空指针异常
      ClassCastException 类型转换异常
      InputMismatchException 输入类型不匹配异常
      ClassNotFoundException 类没有找到异常
      FileNotFoundException 文件没有找到的异常

    1.2 检查异常(受检异常、已检查异常):

            不可避免,编译时抛出异常,没法运行
    如:Class.forName("A"); //查找类A,加载类A

    通常在finally代码块里,放一些释放资源的工作,finally 在程序中无论如何都会被执行
    处理异常的方式:
    try 是必须有的。catch和finally都可以单独存在,或者二者共存。
    break:跳出循环
    return:结束方法
    finally:try{}语句块必须要执行的代码,遇到return也不例外,除非遇到 System.exit() 才不会执行
    System.exit():结束程序

    子类的覆盖方法不能比父类的被覆盖方法抛出更多的异常,就是子类抛出的异常不能超过父类。
    如果父类抛出的异常是Exception,则子类可以抛出所以的异常
    Exception类中定义了一个message属性,并提供了一个
    getMessage()方法获得message属性的值,同时提供了一个构造方法对其属性赋值Exception

    一:
      三种:
      1.try{}catch(Exception ex){}finally{}
      2.try{}finally{}
      3.try{}catch(Exception ex){}
      有catch必须要有try,但是有try可以没有catch
    二:
      声明抛出异常,抛给方法调用处,如果没有方法处理该异常,则最终由JVM来处理
      (如果所以得方法调用处都不去捕获和处理异常,最终抛给JVM处理)
      public static void main(String[] agrs) throws Exception{}

      throws 声明处理异常
      throws 后面可以声明多个异常
      throws 可以应用父类异常代替子类异常

      捕获异常的原则:1.先捕获子类的异常,在捕获父类的异常
              2.如果有方法重写,子类重写的方法不能抛出比父类更多的异常(级别)

    try{}catch(){}fianlly{} 一个try语句块中,可以有多个catch语句块
    try-catch语句块可以嵌套使用

    java 的异常继承结构:Throwable包括 Error和 Exception
    Error:错误
    Exception:程序运行中出现类意料之外的情况
    Exception:包括{RuntimeException(非检查性异常)}和{(IO,Network,AWT..)等非检查性异常}

    捕获处理异常的方法:
    try{
    //需要捕获异常的代码
    }catch(Exception ex){
    //处理异常
    ex.printStackTrace(); //打印异常堆栈
    }finally{
    //必须要执行的语句
    //通常放程序释放资源的代码
    }

    1.用try{}catch(){}处理异常
    2.声明抛出异常:public void fun() throws Exception{ }

    throws 声明抛出异常
    throw 抛出异常对象。 throw new Exception();

    注意事项:
    1.如果有方法重写,子类重写的方法不能抛出比父类更多的异常
    2.处理异常的原则:先捕获子类异常,再捕获父类异常

    自定义异常:extends Exception
    让自定义异常继承Exception
    e.getMessage(); //获得异常消息
    e.printStackTrace(); //处理异常

    return在try-catch-finally中:

    1、不管有木有出现异常,finally块中代码都会执行;
    2、当try和catch中有return时,finally仍然会执行;
    3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;
    4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

    1.e.printStackTrace();——表示打印异常的具体信息,写在catch块中
    2.-1为抛出异常的习惯写法
    3.如果方法中try,catch,finally中没有返回语句,则会调用这三个语句块之外的return结果
    4.finally块无论如何,不管前面是正常还是异常,都要执行。
    5.finally 在try中的return之后 在返回主调函数之前执行


    作者: 00要加油_ 
    链接:https://www.imooc.com/article/17141
    来源:慕课网

  • 相关阅读:
    P1073 最优贸易
    window.btoa()方法;使字符编码成base64的形式
    centOs7 忘记root密码
    window.addEventListener()/window.postMessage(”text“, '*')
    $(function(){})理解
    跨域资源共享/option 请求产生原因
    Angular: Can't bind to 'ngModel' since it isn't a known property of 'input'问题解决
    TypeScript
    盒子模型
    理解事件捕获等
  • 原文地址:https://www.cnblogs.com/wy0119/p/8625663.html
Copyright © 2020-2023  润新知