学习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)异常。 一般逐级上抛,抛到主方法就终止。

    • 格式:

      扫描二维码关注公众号,回复: 10069790 查看本文章
      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声明在方法内 用来 抛出一个异常的对象

猜你喜欢

转载自www.cnblogs.com/wumingzhibei/p/12548947.html