0
点赞
收藏
分享

微信扫一扫

java08

朱小落 2022-01-22 阅读 59
java

java08

java08异常(Exception)处理方式之一:捕获异常处理方之二:声明异常(throws子句)自定义异常错误ErrorIDEA调试debug

异常(Exception)

  • 是程序可以处理的异常

  • 分为运行时异常(RuntimeException)和已检查异常(CheckedException)

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
​
//测试CheckException(已检查异常,编译器曝错)
public class Test02 {
    public static void main(String[] args) {
        FileReader reader = null;
        try {
            reader = new FileReader("d:/a.txt");
            char c = (char)reader.read();
            char c2 = (char)reader.read();
            char c3 = (char)reader.read();
            System.out.println(""+c+c2+c3);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            System.out.println("Test02.main.finally");
            try {
                if (reader!=null){
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

  • 本质:当程序出现异常,程序安全退出,处理完后继续执行

处理方式之一:捕获异常

  • try:当碰到异常处理的代码结束以后,不会回到try语句去执行尚未执行的代码

  • catch:每一个try语句可以伴随一个或多个catch语句,用于处理可能产生的不同类型的异常对象

catch捕获异常时的捕获顺序:如果异常类之间有继承关系,先捕获子类异常在捕获父类异常

  • finally:不论发生什么异常,都会执行

public class Test01 {
    public static void main(String[] args) {
        System.out.println("111");
        try {
            int a = 1 / 0;
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("222");
    }
}

处理方之二:声明异常(throws子句)

  • jdk新特性:try-with-resource自动关闭Closable接口的资源并且在编译时自动转换成try-catch-finally语句

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
​
//测试throws声明式处理异常
public class Test03 {
    public static void main(String[] args) throws IOException {
        FileReader reader = null;
        try {
            reader = new FileReader("d:/a.txt");
            char c = (char)reader.read();
            char c2 = (char)reader.read();
            char c3 = (char)reader.read();
            System.out.println(""+c+c2+c3);
        } finally {
            System.out.println("Test02.main.finally");
            try {
                if (reader!=null){
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
import java.io.FileReader;
​
//使用try-with-resource
public class Test04 {
    public static void main(String[] args) {
        try(FileReader reader = new FileReader("d:/a.txt");){
            char c = (char)reader.read();
            char c2 = (char)reader.read();
            char c3 = (char)reader.read();
            System.out.println(""+c+c2+c3);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
​
​
}
​

自定义异常

  • 自定义异常只需继承Exception类或者它的子类派生的一个子类即可

  • 自定义异常包括两个构造器:一个是默认的构造器,另一个是带有详细信息的构造器

public class IllegalAgeException extends Exception{
    public IllegalAgeException(){
        //默认构造器
    }
    public IllegalAgeException(String message){
        //带有详细信息的构造器,信息存储在message
        super(message);
    }
​
}

错误Error

  • 是程序无法处理的错误

IDEA调试debug

  • 调试的核心是断点:

  • 设置断点:

  1. 在行号后面单击即可增加断点

  2. 在断点上在单击即可取消断点

举报

相关推荐

0 条评论