• 学习Java的第九天


    学习Java的第九天

    • 异常的体系结构

      • 异常有个顶级父类 Throwable
      • 下面有两个直接子类 Exception Error
      • 其中Error 不编写针对性代码进行处理
      • Exception又分为编译时异常和运行时异常
    • 运行时异常常有

      • :ArrayIndexOutOfBoundsException

         @Test
            public void array(){
                int[] arrays = new int[3];
                System.out.println(arrays[3]);
          }
        
      • ClassCastException

         public void method(){
                Object str = "abc";
        //        此处运用了多态 和 自动装箱
                Integer in1 = (Integer)str;
        
            }
        
      • NullPointerException

         public void method1(){
                //NullPointerException
                String []str1 = null;
                System.out.println(str1[0]);
        
      • ArithmeticException

         public void method2(){
                //ArithmeticException 数学运算异常
                int m = 4;
                int n = 0;
                int i = m / n;
                System.out.println(i);
            }
        
    • 编译时异常通常有

      • FileNotFoundException
      • java.io.FileNotFoundException
      • EOFException 文件已经终止 但是继续读取
    • 异常的处理机制

      • try-catch-finally

      • Java程序的执行过程中如出现异常,会生成一个异常类对象, 该异常对象将被提交给Java运行时系统,这个过程称为抛出 (throw)异常。 一般逐级上抛,抛到主方法就终止。

      • 格式:

        try{
        ...... //可能产生异常的代码
        } catch( ExceptionName1 e ){
        ...... //当产生ExceptionName1型异常时的处置措施 
        } catch( ExceptionName2 e ){
        ...... //当产生ExceptionName2型异常时的处置措施 
        } 
        finally{ ...... //无论是否发生异常,都无条件执行的语句 
        
    • 捕获异常的有关信息: 与其它对象一样,可以访问一个异常对象的成员变量或调用它的 方法。

      • getMessage() 获取异常信息,返回字符
      try {
                  i = m / n;
              } catch (java.lang.Exception e) {
      //            e.printStackTrace();
                  e.getMessage();
              }
      //抛出 0 说明 0的输入不合适     
      
      • printStackTrace() 获取异常类名和异常信息,以及异常出 现在程序中的位置。返回值void。
    • finally

      • 不论在try代码块中是否发生了异常事件,catch语句是否执 行,catch语句是否有异常,catch语句中是否有return, finally块中的语句都会被执行。
    • 在开发中,运行时异常一般不需要捕获 抛出异常

      • 一般是对编译时异常进行捕获 抛出异常
    • 异常的处理机制2-throws

      • 如果一个方法可能生成某种异常,但是不能确定如何处理这种异常,应该显示的声明抛出异常,表面该方法将不对这些异常进行处理,由该方法的调用者负责处理。
      public void readFile(String file) throws FileNotFoundException { 
       // 读文件的操作可能产生FileNotFoundException类型的异常 
      FileInputStream fis = new FileInputStream(file); }
      
      
      • 重写方法不能抛出比 被重写方法更大的异常
    • 手动抛出异常-throw

      IOException e = new IOException(); 
      throw e; 
      //首先要生成异常类对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。 
      //可以抛出的异常必须是Throwable或其子类的实例。   
      
    • 用户自定义异常类特点

      • 用户自定义异常类都是RuntimeException的子类。
      • 通常需要编写几个重载的构造器。
      • 需要提供serialVersionUID
      • 通过throw抛出
      • 要见名知义
    • throws和throw的区别

      • throws 声明在方法的声明处 用来对异常做处理
      • throw声明在方法内 用来 抛出一个异常的对象
  • 相关阅读:
    10 个最佳的网站分析方法
    网站优化:测试网站速度的8款免费工具推荐
    8 个最棒的 .NET 开发相关工具
    10 个文件和文档的比较工具
    asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结
    如何在ashx页面获取Session值
    java-信息安全(十一)-非对称加密算法ECC
    java-信息安全(十)-数字签名算法DSA
    java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS
    java-信息安全(八)-迪菲-赫尔曼(DH)密钥交换
  • 原文地址:https://www.cnblogs.com/wumingzhibei/p/12548947.html
Copyright © 2020-2023  润新知