zoukankan      html  css  js  c++  java
  • 4.20JavaCheckedException已检查异常

    4.20JavaCheckedException已检查异常

    CheckedException异常特点

    RuntimeException是在运行是才会发生的异常

    • 所有不是RuntimeException的异常,统称为Checked Exception

    • 在编译时就必须做出处理,否则无法通过编译

    举例:

    IOException、SQLException等

    CheckedException异常的处理方式

    1. 使用"try/catch"捕获异常

    2. 使用"throws"声明异常

    异常捕获图:

    特点:

    • 三个关键词:try-catch-finally

    异常处理过程:

    • 出现异常,系统抛出一个异常

    • 通过它的类型来catch并且处理它---多个catch因为异常类型不一样处理方式也不一样

    • 通过finally语句为异常处理提供一个统一的出口---无论是否遇到异常都会执行finally内的语句

      • finally所指定的代码都要被执行(catch语句可以由多条)

      • fianlly语句最多有一条,根据实际情况可有可无

    会用到IO流的知识

    实例:

    package com.exception;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;

    public class Test02 {
       public static void main(String[] args) {

           FileReader reader = null;
           /*要么抛出,要么try...catch*/
           try{
               reader = new FileReader("c:/a.txt");

               /*测试输出*/
               System.out.println("Step1");
    //           char c1;
    //           try {
    //               /*有了这个对象就开始读字符---使用方法*/
    //               c1 = (char) reader.read(); //这个方法还需要抛出一个异常去处理
    //           }catch (IOException e){
    //               //TODO Auto-generated catch block
    //               System.out.println();
    //           }
    //           /*
    //           可以外面一个try里面再一个try
    //           也可以再外围再补获一次异常
    //             */
               char c1 = (char) reader.read();
               System.out.println(c1);

          }catch (FileNotFoundException e){

               /*测试输出*/
               System.out.println("Step2");
               //TODO Auto-generated catch block
               e.printStackTrace();
          }catch (IOException e){
               e.printStackTrace();
          }finally {

               /*测试输出*/
               System.out.println("Step3");
    //           reader.close(); //因为之前只在try里面声明了对象,所以出了try代码块就不能使用了
               /*
               close抛出异常也需要我们捕获异常
               所以在finally内部还要写一层try...catch
               然后加一个判断
               这就是一个比较完善的try...catch处理流程
                */
               try {
                   if (reader != null){
                       reader.close();
                  }
              }catch (IOException e){
                   e.printStackTrace();
              }
          }
      }
    }
    /*
    FileNotFoundException和IOException有父类和子类的关系
    一般有父子关系的类都是---子类异常在前父类异常在后
    因为在捕获异常的时候无论是FileNotFoundException和IOException都会到IOException中
    因为子类的类型也属于父类里面
    也可以处理
    Reader是需要关闭的---节省资源(无论是执行完成还是抛出异常)
    */

     

    It's a lonely road!!!
  • 相关阅读:
    UITableView 总结
    关于UIView的autoresizingMask属性的研究
    支付开发
    202011.11
    202011.10
    202011.09
    养成一个习惯,每天写博客,不放假就不变
    html重置功能
    echart折线图插件图片的宽度和页面的自适应
    点击使文字变文本框且可编辑的JS
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14682632.html
Copyright © 2011-2022 走看看