Java异常

异常概念:不是正常的情况

  • Java 异常是编程中很重要的一个概念。

  • 用于处理程序运行过程中可能出现的错误或异常情况。

  • 异常是程序在执行过程中产生的一个特殊的情况,它会中断正常的执行流程,所以需要程序员进行相应的处理。

Java中异常分为两类:检查性异常和非检查时异常

  • 检查性异常是必须显式处理的异常。在编写代码时。编译器会强制要求你使用throws或者try-catch关键字来处理这些异常

  • 常见的检查时异常:IOException IO异常、FileNotFoundException文件找不到异常

  • 非检查时异常是运行时异常基类。它们通常是因为程序错误导致的异常。

  • 常见的非检查时异常:NullPointerException 空指针异常,ArrayIndexOutOfBoundsException 数组下标越界,ArithmeticException 算数异常

异常的处理:

 1.检查时必须处理
 2.非检查时异常,也需要处理。 
  • 异常处理的方式(二种):
  1. 捕获异常(try - catch -finally),在代码块中捕获并处理异常。如果try块中的代码出现异常。交给catch 处理。
    finally块是可选的,无论是否发生异常,finally块都将执行。这对于资源的清理非常有用。例如关闭流或数据库连接

  2. 抛出异常(Throws):在方法声明上使用throws关键字发声明该方法可能抛出的异常。谁调用这个方法谁解决。

		System.out.println("1.程序开始执行");
        try{
            System.out.println("2.我会打印吗?");
            //可能出现异常的代码
            System.out.println(1/0);
            System.out.println("3.我会打印吗?");
        }catch (ArithmeticException ae){//()里写异常的类型
            System.out.println("4.我会打印吗?");
            //处理异常  printStackTrace()将异常打印到控制台
            ae.printStackTrace();
            System.out.println("5.我会打印吗?");
        }finally {
            //可选:无论有没有异常都会执行的代码
            //关闭流/释放资源
            System.out.println("6.无论怎样,我都会执行..");
        }
        System.out.println("7.程序运行结束");

throw:"throw"关键字用来在方法内部手动抛出一个异常。

  • 当遇到特殊的错误条件时,程序员可以使用"throw"来抛出一个异常
    会结合自定义异常类来使用
  • 创建一个异常类 继承RuntimeException 运行时异常
public class IXiaoYu0Exception extends RuntimeException{
    //生成一个构造方法
    public IXiaoYu0Exception(String message) {
        super(message);
    }
}
  • 当输入的参数i<0时,手动抛出一个异常
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int i = sc.nextInt();
    //特殊的错误条件:i<0异常
    if(i<0){
        //非受检异常,运行时异常
        throw new IXiaoYu0Exception("i不能小于0");
    }
}

课堂练习:处理文件读取的异常

 public class ExceptionLianXi1 {
        public static void main(String[] args) {
            //创建一个File对象
            File file = new File("src\\week7\\day1\\抄写笔记.txt");
            //先声明再赋值
            BufferedReader br = null;
            try{
                //创建一个FileReader对象
                FileReader fr = new FileReader(file);
                //异常代码
                System.out.println(1/0);
                //创建一个BufferedReader 对象
                 br = new BufferedReader(fr);
                String line;
                while((line=br.readLine())!=null){
                    System.out.println(line);
                }
            }catch (FileNotFoundException ffe){
                //处理文件找不到异常
                ffe.printStackTrace();
            }catch (IOException ie){
                //处理IO流异常
                ie.printStackTrace();
            }catch (ArithmeticException ae){
                System.out.println("算术异常");
            }finally {
                //关闭流对象
                try{
                	//避免空指针异常
                    if(br!=null)
                    br.close();
                }catch (IOException ie){
                    //处理异常
                    ie.printStackTrace();
                }
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值