“Java 语言程序设计实验 2023秋季”实验报告 异常类

实验报告四 异常类

一、实验目的及要求

  1. 实验目的:掌握异常类中的try-catch语句和自定义异常类,熟悉并学会自定义异常对象的方法,对程序运行中出现的各种异常进行处理。

  2. 实验要求:清楚try-catch语句和自定义异常类在错误产生时的程序控制流程,要求会自定义异常类的方法,对程序运行时可能出现的问题进行处理,给出产生异常情况下的具体操作。

  3. 上机实验内容:使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try部分,将发生异常后的处理放在catch部分,让程序有机会对错误作出处理。同时,编写程序扩展Exception类定义自己的异常类,然后规定哪些方法产生这样的异常。在定义具体类声明一个方法时使用throws关键字声明要产生的若干个异常,并在该方法的方法体中具体给出产生异常的操作,让程序转向对异常进行处理,最后完成实验报告。

二、实验环境

  1. 硬件要求:计算机一台

  2. 软件要求:Windows操作系统,使用Java语言,集成开发环境不限,建议使用如Eclipse、MyEclipse或IntelliJ IDEA等。

三、实验内容

  1. 基本概念

1.1 异常定义

  • 异常是运行程序的过程中产生的异常情况。
  • 异常的情况是指程序在运行过程中,可能由于外界条件的变更(不设想的不一致)导致出现错误的情况(如数据库连接)。
  • 异常不同于常态,在程序运行过程中,有错误产生,把这种错误的状态称为异常。但是开发过程中,语法错误和逻辑错误不属于异常。
  • 出现异常时,Java会阻止当前的方法,中断执行程序的指令流。为了更好的错误,我们必须使用异常类。

1.2 出现异常的原因

  • Java内部出现的错误,由jvm虚拟机产生的异常。这种一般属于error类,我们处理不了(关机重启),交给jvm自行处理。
  • 编写代码时产生的错误,就像算法异常,空指针异常等。这种属于Exception类,我们可以根据报错原因,修改错误。
  • 手动throw异常,提示使用者一些信息。

1.3 异常产生的过程

  • 运行或编译时产生异常。例如数组下标越界,空指针异常等。
  • JVM会自动创建对应异常类的对象,例如new 。ArrayIndexOutOfBoundsException()。
  • 异常类需要在代码中声明抛出。例如函数声明使用throws关键字声明可能抛出的异常类。
  • 当前方法无法处理异常,会将异常对象传给调用该方法的上一级方法。如果一直无法处理会传给main()方法。
  • main()方法也无法处理,会将异常对象传给JVM。
  • JVM收到异常后,会打印异常的类名、详细消息和发生异常的代码位置到控制台。例如:Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3at Test.main(Test.java:5)
  • 然后JVM会终止程序的运行,退出程序。

1.4 Java异常和错误的概念

  • Throwable是所有错误或异常的超类,下分Error和Exception两大类。
  • error错误是Java内部产生的错误,程序无法处理,如:Virtual MachineError(虚拟机运行错误)、NoClassDefFoundError(类定义错误),堆栈溢出。
  • Exception异常是程序运行时出现的错误。可以通过报错类型进行修改错误。Exception异常可以分为checkedexception(受检异常)和uncheckedexception(不受检异常)。受检异常发生在编译期间,必须对异常情况进行处理,要么用try…catch要么使用throw。否则编译不通过。不受检异常发生在运行期间,这个时候需要根据报错提示解决。

1.5 捕获异常的组合方式

  • try catch finally组合:检测异常,并传递给catch处理,并在finally中进行资源释放。
  • try catch组合 : 对代码进行异常检测,并对检测的异常传递给catch处理。对异常进行捕获处理。
  • 一个try 多个catch组合 : 对代码进行异常检测,并对检测的异常传递给catch处理。对每种异常信息进行不同的捕获处理。 注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。
  • try finally 组合: 对代码进行异常检测,检测到异常后因为没有catch,所以一样会被默认jvm抛出。异常是没有捕获处理的。但是功能所开启资源需要进行关闭,所有finally。只为关闭资源。
    1.6 异常的处理的两种方式
    在Java中对于程序可能出现的检查时异常,要么用try…catc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值