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!!!
原文地址:https://www.cnblogs.com/JunkingBoy/p/14682632.html