Java基础-异常处理机制 及异常处理的五个关键字:try/catch/finally/throw /throws

笔记:

/** 异常处理机制: 抓抛模型
 *     1."抛", 一旦抛出,程序终止! printStackTrace()显示异常路径!
 *      2."抓", 抓住异常
 *      try{
 *          //try语句声明的变量是局部的,
 *          //可能出现异常的代码
 *      }catch(Exception e1){
 *          //处理的方式1, 或者显示提示信息
 *      }catch(Exception e2){
 *          //处理的方式2, 或者显示提示信息
 *      }finally{
 *          //可选,可不选
 *          //无论如何,这个代码是一定会执行的
 *      }
 *      3.异常处理后,后面的代码可以继续执行!
 *      4.在方法的声明出, 显式地抛出异常对象的类型
 *   -----------------------------------------
 * 自定义异常处理
 *      1.方法名() throws Class ExceptionList extends Exception
 *      2.
 * */

[笔记2]异常处理的5个关键字:

/**异常处理的5个关键字:
 * 捕获异常: try/catch/finally
 * 抛出异常:  throw 可以手动抛出异常对象;例如: throw new Exception("您输入的数值存在负数!");
 * 声明异常: throws 声明方法 可能要抛出的各种异常类,向上 传递异常,直到Main()函数!!:
 *                  returnType methodName(....) throws ExceptionList{
 *                      throw new ExceptionList("......");
 *                  }
 *                  class ExceptionList extends Exception{   //自定义的异常类
 *                  }

代码1:

public class TestExcption{
    public static void main(String[] args) throws IOException {
            TestExcption.method1();
    }
    static void method1() throws IOException ,FileNotFoundException{
        FileInputStream fis =new FileInputStream(new File("hello.txt"));
        int ch;
        while((ch =fis.read())!=-1 ){
            System.out.print((char)ch);
        }
        fis.close();
    }
}

运行1:

Exception in thread "main" java.io.FileNotFoundException: hello.txt (ϵͳÕҲ»µ½ָ¶)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at 任务138_处理异常.TestExcption.method1(TestExcption.java:35)
    at 任务138_处理异常.TestExcption.main(TestExcption.java:32)

代码2:

import java.util.Scanner;

public class EcmDef {
    public static void main(String[] args) {
        try{
            Scanner cin=new Scanner(System.in);
            int i,j;
            i=cin.nextInt();
            j=cin.nextInt();
            EcmDef.ecm(i,j);
        }catch (NumberFormatException e){
            System.out.println("异常:输入数据类型不一致!");
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("异常:缺少命令行参数");
        }catch (ArithmeticException e){
            System.out.println("异常:分母为0了");
        }catch (EcDef e){
            System.out.println(e.getMessage());
        }
    }
    public static void ecm(int i,int j) throws EcDef{   //综合应用throw()和throws()!
        if(i<0||j<0)
            throw new EcDef("您输入的数值存在负数!");
        else
            System.out.println(i/j);
    }
}
class EcDef extends Exception{  //自定义一个异常类, 两个构造器直接 生成即可!
    public EcDef() {
    }
    public EcDef(String message) {
        super(message);
    }
}
View Code

运行2:

1 -2
您输入的数值存在负数!

1 0
异常:分母为0了
View Code

猜你喜欢

转载自www.cnblogs.com/zhazhaacmer/p/9785774.html