第六章:异常

第六章:异常

​ 我们在程序中会遇到很多的异常,有的是编译时异常,有的是运行时异常

编译时异常:在我们写代码的时候就变红色的,无法启动时的异常。

运行时异常:运行过程中报出的异常。

​ 我们为什么要解决异常?

我们解决异常时因为,我们并不想因为一个地方报错导致整个程序出现崩溃,我们在打游戏时往往是一个是一个模块出现错误,并不影响其他模块的使用,所以我们处理异常。

下面的程序会报错吗?

Scanner in = new Scanner(System.in);
System.out.print("请输入被除数:");
int num1 = in.nextInt();
System.out.print("请输入除数:");
int num2 = in.nextInt();
System.out.println(num1+"/"+ num2 +"="+ num1/ num2);
System.out.println("感谢使用本程序!");

​ 没错当0做除数的时候,程序就会报错,我们想解决想处理所有的逻辑是很耗时的,代码量也会十分的臃肿。并且我们也难堵上所有的漏洞。

​ 这时我们就要用java的异常处理了。

一,概念

异常是一种特殊的对象,类型为java.lang.Exception或其子类

Java处理异常机制:Java编程语言,使用异常处理机制为程序提供了错误处理的能力。

异常对象都会有一个方法叫printStackTrace(),它会把错误信息打印出来。

在这里插入图片描述

处理过程

在这里插入图片描述

处理异常的方式

Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws

在这里插入图片描述

常见的异常类型

在这里插入图片描述

二,try-catch块

使用try-catch块捕获异常,分为三种情况:

第一种情况:正常

在这里插入图片描述

第二种情况:出现异常

在这里插入图片描述

第三种情况:异常类型不匹配

在这里插入图片描述

​ 另外我们也能在catch块中添加自定义信息

public void method(){
        try {
                 // 代码段 1
                // 产生异常的代码段 2
               // 代码段 3
        } catch (异常类型 ex) {
               // 对异常进行处理的代码段4
            System.err.println("出现错误:被除数和除数必须是整数 ");//自定义信息
        }
        // 代码段5
}

也可以调用Exception的方法printStackTrace();和getMessage()去输出错误的堆栈信息。

在这里插入图片描述

三,try-catch-finally

这个代码块我们要注意的是执行顺序。

在这里插入图片描述

在这里插入图片描述

try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一

四,声明异常

​ 如果在一个方法体中抛出了异常,如何通知调用者?用throwsthrow关键词去抛出异常。

在这里插入图片描述

一,throws

​ throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开,一般在最外层处理,调用时可以处理,可以继续抛出。

二,throw

​ 一般声明自定义异常,throw后面要实例化一个异常实例,通常是我们自定义的异常类。

三,throw和throws关键字的区别
  • 位置不同:
    • throw在方法体内,后面跟的是异常类对象名 ;
    • throws在方法声明上, 后面跟的是异常类名 ;
  • 可以抛出异常的个数不同:
    • throws: 可以跟多个异常类名,用逗号隔开 ;
    • throw: 只能抛出一个异常对象名 ;
  • 处理的位置不同:
    • throws: 表示抛出异常,由该方法的调用者来处理;
    • throw: 表示抛出异常,由该方法体内的语句来处理;
  • 出现异常的可能性不一样:
    • throws: throws表示有出现异常的可能性,并不一定出现这些异常;
      示抛出异常,由该方法的调用者来处理;
    • throw: 表示抛出异常,由该方法体内的语句来处理;
  • 出现异常的可能性不一样:
    • throws: throws表示有出现异常的可能性,并不一定出现这些异常;
    • throw: throw则是抛出了异常,执行throw一定出现了某种异常;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值