【吉林大学Java程序设计】第6章:异常处理

Java练习6:自定义一个异常类NoThisSongException和Player类 作者说: 这个实验用到了自定义异常类的知识,练习了throws、throw、try...catch的使用方法。 实验的要求还是比较详细的,比较好完成。 一、实验要求 二、运行效果截图 1.输入的数据符合要求 2.输入的数据不符合要求 三、代码示例 import java.util.Scanner; public class Test6 { public static void main(String[] args) { Player p=new Pla 阅读详情

1.异常概述

  • Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java的运行时系统,这个过程称为抛出(throw)异常。
  • 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
    在这里插入图片描述

1.1 异常和错误

  • Java语言中的异常事件分为两种:
    • Exception是指那些程序中可能发生的、经过处理有可能恢复正常的非正常事件。经过处理后,可以不中断程序的执行。非致命的
      • 如:输入输出异常(IOException)、运行时异常(RuntimeException)……
    • Error是指那些程序中可能发生的、非常严重且无法恢复的非正常事件。将使程序中断执行而退出系统。 致命的
      • 如: 虚拟机错误(VirtualMachineError )、内存溢出错误(LinkageError)……
    • Runtime Exception是一类特殊的异常(Exception),如除0、数组下标超过范围等,其产生比较频繁,处理麻烦,如果显示的声明或捕获将会对程序的可读性和运行效率影响很大。因此可由系统自动检测并将它们交给缺省的异常处理程序,而用户可以不必对其进行处理。
      • 如:算数异常(ArithmeticException)、索引越界异常(IndexOutOfBoundsException)……

1.2 标准异常类

在这里插入图片描述

1.3 不受检异常和和受检异常

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.异常处理方法

  • 两种处理方法:
    • 使用try-catch-finally语句块结构在程序代码中捕获和处理异常;
    • 使用throws把异常对象通过层层向上抛出直至转交给JVM处理。Java语言称产生异常和转交异常的过程为抛出异常。(可以理解为甩锅)
      在这里插入图片描述

2.1 捕获和处理异常

在这里插入图片描述

在这里插入图片描述

  • 多个catch块时候,只会匹配其中一个异常类并执行catch块代码,而不会再执行别的catch块,并且匹配catch语句的顺序是由上到下
  • 在catch中声明的异常对象catch(OneException e)封装了异常事件发生的信息,在catch语句块中可以使用这个对象的一些方法获取这些信息。
    • getMessage() :获取错误性质
    • toString() :给出异常的类型与性质
    • printStackTrace() :指出异常的类型、性质、栈层次及出现在程序中的位置
  • 通常在finally语句中可以进行资源的清除工作,如:关闭打开的文件、删除临时文件等
    在这里插入图片描述

2.2 抛出异常

在这里插入图片描述

  • throws和throw的区别:
    • throws是在方法声明时放在方法头中的,作用是声明一个方法可能抛出的所有异常;
    • throw则出现在方法体的内部,是一个具体的执行动作,作用是抛出一个具体异常对象。

例:在ThrowsException类中对于所有可能出现的异常并不catch,而只是在方法后加throws Exception来声明该方法中可能存在该类异常,让调用该方法的方法(如main方法)来处理
在这里插入图片描述
在这里插入图片描述

2.3 异常传递链

在这里插入图片描述

3.自定义异常

在这里插入图片描述

3.1 自定义异常的创建

在这里插入图片描述

3.2 自定义异常的抛出与捕获

定义异常类的代码写在程序中,与其他类定义并列成为程序的一部分,在使用时与已有的异常类基本相同,只是在throw子句中使用例如下面的语法:throw new MyException( );

在这里插入图片描述
在这里插入图片描述

异常处理综合示例

3:执行try中内容,此时throw2抛出了一个Exception异常,由于没有catch到RuntimeException,所以执行finally块中代码,然后返回到上一层
8:此时try块中代码执行完毕,并且此时有一个从里层抛出的Exception异常
9:catch到Exception异常,执行catch块中内容,可以看到getMessage只是给出了
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

Java异常处理机制的优点

  • 把各种不同的异常事件进行分类,体现了良好的层次性
  • 处理异常的代码和“常规”代码分开,减少代码,增强可读性
  • 使异常事件可以沿调用栈自动向上传播,而非通过函数返回值传播
  • 可以统一或分别处理具有相同父类的异常
  • 为具有动态运行特性的复杂程序提供了强有力的控制方式
吉林大学Java编程基础课程课件 在Java中,类是构造对象的蓝图或模板。一个类可以包含属性(变量)和方法(函数),它们定义了类的状态和行为。类是面向对象编程(OOP)中的基本元素之一,提供了封装数据和操作数据的方法的能力。类的结构通常包括以下几个部分:类声明:定义类的名称和它所属的包。成员变量:定义类的属性,可以是基本数据类型或引用数据类型。构造方法:一个特殊的成员方法,用于创建类的新实例时初始化对象的状态。方法:定义类的行为和功能,可以改变对象的状态或计算某些结果。 阅读详情

相关推荐

吉林大学Java数据库实验代码合集:JDBC连接、Swing界面改造与批量/子查询插入实战

一套面向高校数据库应用开发课程的Java实操代码,覆盖从基础JDBC连接到图形界面升级的完整流程。包含多个版本的员工信息管理程序(labupdate5.java至labupdate8.java),全部改造成基于JOptionPane的命令行式GUI交互,支持输入员工数据、显示操作结果等。提供labupdate_Frame.java作为Swing窗体参考模板,labaddbatch.java演示PreparedStatement批量插入多条记录,配合EMPLOYEE表截图展示单行插入、多行插入及SELECT子

mongodb5scout的博客 226

java中的异常基础知识,系统中自定义异常的使用和异常常见的面试题

一、什么是异常,java提供异常处理机制有什么用? 1、什么是异常? 程序执行过程中发生不正常的情况,而这种不正常的情况叫做:异常。 2、java提供异常处理机制有什么用? java与语言是很完善的语言,提供了处理异常得处理方式,如果程序执行过程中出现了不正常情况,java会把该异常信息打印输出到控制台,供程序员参考。程序员看到异常信息后,可以对该程序进行修改,让程序变的更加健壮。 3、异常在java中存在的形式? 每一个异常类都可以创建异常对象。 类是:模板。 对象是:实际存在的个体。 二、java的异常

wangjingyuing的博客 606

告别JTAG!用Artix-7和SPI Flash实现FPGA远程升级的保姆级教程

本文详细介绍了如何利用Artix-7 FPGA和SPI Flash实现FPGA远程升级(OTA)的完整方案。通过硬件连接、Vivado工程配置和STM32模拟更新等步骤,帮助开发者告别传统的JTAG烧录方式,实现高效、安全的远程固件更新,特别适用于嵌入式系统开发中的现场维护场景。

weixin_33964987的博客 364

6-2 自定义异常 (10分)

完成程序,使得程序正常输出。 函数接口定义: 仔细阅读主程序相关调用。 裁判测试程序样例: public class Main { public static void main(String args[ ]) { try{ throw new DefaultException("Default Exception"); } catch(Exception e) { System.out.println(e); } } } /* 请在这里填写答案 */ 输入样例: 输

trustme___的博客 1448

优化Cartographer重定位速度:从子图筛选到参数调优的完整思路

本文详细介绍了优化Cartographer重定位速度的完整方法,从子图筛选到参数调优,帮助工程师在已知初始位姿的前提下将重定位耗时降低50%以上。重点分析了性能瓶颈、子图筛选策略、匹配算法选择及环境自适应的参数优化策略,并通过实战案例展示了显著效果提升。

weixin_28704565的博客 464

Oracle ERP EBS R12 GL总帐业务方案 系统操作

本文档是Oracle ERP系统的总账管理模块使用手册,主要包含以下内容:1.系统架构设计,详细介绍多组织架构、会计科目设置等核心概念;2.总账日常操作流程,包括凭证录入、审核、过账等全流程管理;3.特殊业务处理,涵盖预算控制、内部往来、合并报表等专项功能;4.期末处理,说明月结、年结的操作步骤;5.系统设置指南,提供会计科目表、权限控制等配置说明;6.附录包含各业务模块的分录示例和系统操作图标说明。本手册适用于财务人员学习和使用Oracle ERP总账系统,重点讲解系统功能要点和实操步骤。

anpeng2019的博客 1888

异常-自定义播放异常

任务描述:自定义一个异常类NoThisSoundException和Player类,在Player类的player()方法中使用自定义异常。 定义异常类NoThisSoundException继承自Exception类,类中有一个无参构造方法、一个有参构造方法,构造方法中都使用super关键字调用父类的构造方法。 Player类中定义一个player(int index)方法,当index<=10的时候,输出“正在播放第× ×首歌曲”;当index>10时,抛出NoThisSoundExcept

cntakeshi的博客 1506

深入解析:el-table合并单元格

  在企业级应用开发中,我们经常需要处理复杂的数据展示需求。在构建复杂的数据展示后台时,我们常常需要将表格中具有相同属性的行进行视觉上的合并,以提升信息的聚合度和可读性。在 Element Plus 的 el-table 组件中,span-method 属性是实现单元格合并的核心机制,允许开发者自定义单元格的合并逻辑,开发者可以通过实现自定义合并策略来满足各种负责需求。  合并行的本质是通过计算相邻行数据的相似性,确定满足合并的单元格范围,然后通过 DOM 操作将多个单元格合并为一个。这种操作在前端数据可视

独泪了无痕 229

【吉林大学Java程序设计】第1章:Java语言基础

Java语言基础

云沧同学的博客 1431

从平面到立体:一张图看懂MOSFET、FinFET到GAAFET的演变史(附结构对比图)

本文深入解析了半导体晶体管从平面MOSFET到三维FinFET,再到全环绕栅极GAAFET的技术演进历程。通过结构对比图和物理原理分析,揭示了每一次创新如何解决短沟道效应等关键挑战,推动芯片性能提升。特别关注GAAFET作为最新技术突破的架构特点和性能优势。

weixin_30892037的博客 695

学习笔记( 11 ) - 解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

解决:finalshell连接虚拟机(ubuntu)超时,主机ping不通虚拟机,主机没有VMnet8网卡, Connection refused: connect

烟溪彭于晏的博客 2万+

吉林大学Java程序设计实验报告:深入掌握Java编程技能的不二之选

吉林大学Java程序设计实验报告:深入掌握Java编程技能的不二之选 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在现代软件开发领域,Java作为一种成熟的编程语言,以其跨平台、稳定的特性被广泛应用。为了帮助学习者和开发者深入理解和掌握Java程序设计,吉林大学Java程序设计实验报告提供了一份详尽的实验指南和源代码资源。这份报告涵盖了6次实验课的详细解答、源代码及...

gitblog_06773的博客 350

物联网应用开发教程专栏介绍与说明——列表目录查阅(持续更新)

为方便查阅学习本专栏,特整理专栏介绍与说明及提供列表目录便于查阅。阿齐Archie《物联网应用开发教程》专栏。本专栏为物联网应用开发教程,将更新涵盖常见的WIFI、蓝牙、蜂窝网、以太网、Lora、NB-iot等物联网技术实战应用及详解其技术知识。专栏为技术文章,订阅一个文章即可本专栏内所有文章可看,实战开发,亲测无误,附视频演示效果,会持续更新本专栏。本专栏内有理论篇也有完整实战应用篇。

嵌入式阿齐Archie 2万+

吉林大学2015级《Java语言程序设计》考试题自做答案

吉林大学2015级《Java语言程序设计》考试题自做答案 1.面向对象中什么是类?什么是对象?它们之间的关系是什么? 答:类是组成Java程序的基本要素,既是组织程序代码的基本单位,也是面向对象程序设计的主体。类是创建对象的模板,对象是类在程序中的实例化。对象实例在程序中包括生成、使用和清除三个阶段。对象实例的生成又包括声明、实例化和初始化三个步骤。 2.Java语言中的访问权限控制符有哪些?对应的访问权限都是什么? 答:Java有三种访问控制符public、protect、private,还有一种没有关

qq_38336763的博客 2592

【WRF-UCM】BEP+BEM 模拟:README

【WRF-UCM】BEP+BEM 模拟:README

WW、forever的博客 223

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

吉林大学java期末试卷_吉大18年9月《JAVA程序设计》作业考核试题-0001

1int 型 public 成员变量 MAX_LENGTH,该值保持为常数100,则定义这个变量的语句是( )A、public int MAX_LENGTH=100B、final int MAX_LENGTH=100C、public const int MAX_LENGTH=100D、public final int MAX_LENGTH=1002下列哪个类声明是正确的( )A、abstr...

weixin_39931146的博客 1294

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

吉林大学java期末试卷_2016年9月吉林大学课程机考复习题-JAVA程序设计

1、在下列说法中,选出最正确的一项是( )。 1.Java语言是以类为程序的基本单位的2、下列选项中不属于Java虚拟机的执行特点的一项是( )。4.简单易学3、下列选项中属于Java语言的垃圾回收机制的一项是( )。 4.内存跟踪4、下列选项中属于Java语言的安全性的一项是( )。 3.访问权限5、下列选项中,属丁JVM执行过程中的特点的一项是( )。3.异常处理5、执行如下语句之后,输出的结...

weixin_30093045的博客 1111

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

吉林大学Java编程上机题(Lab3)

(3)题目:输入若干个整数,求其和,直到结束标志999为止。在输入过程中,其输入非正整数,则忽略。其实也就是跳过发生InputMismatchException异常的错误输入。 红色字\color{red}{红色字}红色字 分析: 代码如下:importjava.util… 目的:输入若干个整数,求其和,直到结束标志999为止。在输入过程中,其输入非正整数,则忽略。其实也就是跳过发生InputMismatchException异常的错误输入。

KQ的博客 2402

吉大java考试题_吉大20春学期《JAVA程序设计》在线作业二-1(答案)

答案来源:奥学网(www.aoxuewang.net)-[吉林大学]吉大20春学期《JAVA程序设计》在线作业二试卷总分:100 得分:100第1题,在 Java 中,所有类的根类是( )。A、java.lang.ObjectB、java.lang.ClassC、java.applet.AppletD、java.awt.Frame正确答案:第2题,向量可以描述成( )。A、固...

weixin_35073008的博客 642

吉林大学DB2数据库应用程序开发Java资源文件推荐

吉林大学DB2数据库应用程序开发Java资源文件推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 吉林大学DB2数据库应用程序开发Java资源文件是一个专为吉林大学学生设计的开源项目,旨在帮助学生掌握DB2数据库应用程序的开发技能。该项目包含了四个主要任务,涵盖了从基础代码补充到复杂GUI界面开发的多个方面。通过这些任务,学生可以系统地学习和实践Java与DB2数据...

gitblog_09733的博客 675

java精品课程_JAVA程序设计

本课程为吉林大学JAVA.html">JAVA程序设计精品课程教学视频,全套课程共48学时,由壹课堂网整理免费共享。Java语言是一种广为使用的面向对象的编程语言,其设计思想代表了目前最为先进的高级语言程序设计思想。Java语言是一种具有“简单、面向对象的、分布式、解释型、健壮性(鲁棒性)、安全、平台无关、可移植、高性能、多线程和动态执行”等特性的语言,是一种独立于平台的网络编程语言。在计算...

weixin_28947385的博客 489

《数据库系统应用程序开发》考试

考试的主要内容在PPT里的JDBC Programing with Java Ⅰ&&Ⅱ,除了第一大题的简单JDBC语句,还涉及实验报告和Java程序设计的内容。 我届考试题目与往年极其相似,后悔没有好好看题。。呵呵 下附考试真题。(^_^) 看完可以考满分。 《2016-2017年度吉林大学第一学期数据库程序开发考试》 一.写出jav...

咕咕怪的博客 4711

吉林大学JAVA期末复习——异常处理(第六章)

异常机制其实是帮助我们**找到**程序中的问题,异常的根类是`java.lang.Throwable`,其下有两个子类:`java.lang.Error`与`java.lang.Exception`,平常所说的异常指`java.lang.Exception`。> 注意:这种异常处理方式,要求多个catch中的异常不能相同,并且若catch中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的catch处理,父类异常在下面的catch处理。* **运行时期异常**:runtime异常。

qq_73044452的博客 306

吉林大学软件学院数据库系统应用程序开发期末复习及多年真题

假设某数据库中有员工表,包含员工编号、姓名、年龄、工资、简历(CLOB)及照片(BLOB),其中员工编号为主键,其它皆可为空。"运行后变量updateCount的值为3,但查看表 STAFF中的数据并无任何变化,请分析原因。2.定义一个结果集对象,该对象将执行的查询语句是“查询表staff,获取员工编号为10的员工名字(name)、工作(job)和工资(salary)”,对象名自行定义。读取缓冲区里的数据,不是数据库里的,也不改变数据库的数据。读取缓冲区里的数据,不是数据库里的,也不改变数据库的数据。

2302_80289636的博客 1470

《数据库系统应用程序开发》期末复习

前言 找到这里的学弟学妹你们好啊,以下主要是我在准备软件工程数据库应用db2课程的复习资料,希望能够帮到你们。 不过需要注意的是: ①所有罗列出的代码因为不要求具体编译环境,所以可能跟实际运行会有出入,在此只是给大家一个基本的参照和思路,请不要以这个为标答。 ②请注意你们的考试范围,我们这届老师画的范围如下: 全部来自报告内容 只有五道题(每道题都是代码题) 会给一个数据库表 要求掌握需要导入哪些包,有哪些公共方法 去年考的批处理、查询并更新、clog、blog 今年不考GUI ③最后鸣谢我的学长学

KQ的博客 1万+

吉林大学Java上机实验(Lab3.xls)

Java第三次上机实验

qq_73044452的博客 473
上一篇: 【吉林大学Java程序设计】第5章:图形用户界面
下一篇: 【吉林大学Java程序设计】第7章:对象的容纳
云沧同学
博客等级 码龄4年 577粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值