【Java】java异常处理机制(实验五)

目录

一、实验目的

二、实验内容

三、实验小结


一、实验目的

1、理解java的异常处理机制

2、掌握try catch结构和thow和thows关键字的用法

二、实验内容

1、编写一个程序,输入某个班某门课程成绩,统计及格人数、不及格人数及课程平均分。设计一个异常类,当输入的成绩小于0或者大于100时抛出异常,程序将捕获这个异常,并作出相应处理。

源代码:

实验运行截图:

2、车站检查危险品的设备,如果发现危险品会发出警告。编程模拟设备发现危险品。编写一个 Exception 的子类 DangerException,该子类可以创建异常对象,该异常对象调用 toShow()方法输出“属于危险品”。编写一个 Machine 类,该类的方法 checkBag(Goods goods)当发现参数 goods 是危险品时(goods 的 isDanger 属性是 true)将抛出 DangerException 异常。程序在主类的 main()方法中的 try-catch 语句的 try 部分让 Machine 类的实例调用checkBag (Goods goods)方法,如果发现危险品就在 try-catch 语句的 catch 部分处理危险品。

源代码:

实验运行截图:

三、实验小结

1、Java支持在一个类体中定义另一个类、类体中定义的类被称为内部类、而内部类外面的类被称为外嵌类。可以将内部类理解为外嵌类的一个成员变量、可以用被private、protected、static修饰,其中private修饰的内部类、类体中的成员不能通过外嵌类的对象来操作,只能在外嵌类体中操作private修饰的内部类成员;protected修饰的内部类、由于外嵌类包含内部类因此肯定都属于同一个包(文件夹)下,所以protected修饰的内部类、类体中的成员可以被外嵌类的对象操作;static修饰的内部类在其他类中(如:主类)可以通过“外嵌类名.内部类名”的方式创建内部类对象,否则内部类只能在外嵌类体中创建对象。

Static、private、protected可以修饰声明定义的内部类,在声明定义其它类中不能使用此三个访问限制符。final修饰的类不能被继承;abstract修饰的类只能当做父类来用,不能创建创建对象;public修饰的类同包不同包都可以被继承被访问,默认的友好类同包下能被继承、被访问、不同包下则不能。内部类中的成员变量和方法只能通过内部类对象的引用(地址)来操作内部类中的成员变量和方法。

2、匿名类从形式上看就是只有类体没有类声明(class 类名 extends 父类)的类。匿名类可以使开发者不用声明定义子类就可以创建子类的对象。

2.1匿名子类“new 父类名(调用父类构造方法所传递的参数) {类体}”:

        2.1.1由于匿名子类肯定要在某个类中创建(如:主类),所以匿名子类也属于创建匿名子类类体所在类的内部类。

        2.1.2在匿名子类的类体中可以操作外嵌类的成员变量和方法、以及从父类继承的成员变量和方法。

2.2实现接口的匿名类“new 实现接口名( ) {重写接口的方法}”:

3、不管是匿名子类还是实现接口的匿名类,由于都是没有类名的类所以其通过类体创建的对象的引用只能赋值给自己的父类或接口类变量(上转型对象),通过父类或接口变量来调用匿名类体中重写父类或接口抽象方法的方法。父类或接口的类型变量可以分别访问子类中重写了父类或接口的方法和从父类或接口中继承的成员变量和方法、不能访问子类类体中定义的成员变量和方法。

4、lambda匿名方法表达式“(形参)->{重写接口抽象方法的方法体}”:lambda表达式的返回值是方法的地址,可以将其赋值给一个单接口(接口中除了其他方法只有一个abstract抽象方法)类型的变量,这样接口变量就能以“接口名.接口抽象方法名是(实参)”的形式调用lambda表达式重写接口的方法。

5、用户自定义异常类流程:

                  ①定义一个异常类并继承Exception异常类。类体中要包含有存储程序方发生异常时的提示字符串的属性变量和构造方法来初始化属性变量保存的异常提示信息。

                  ②其它类在定义方法时如果想对方法执行时可能发生的异常进行处理,则只需在定义方法时在形参括号的后面加上:“void 方法名(形参) throws 异常类”,来指定方法体中使用throw抛出的异常类的对象所属的异常类;然后在方法体内结合if判断语句对可能出错的代码使用“throw new 异常类( )”的形式抛出异常类的对象地址。Tip: 方法一旦抛出了异常则方法的调用就立即结束、方法体中后面的代码不在执行。

③在主类中使用try-catch来对可能出错的代码进行监测。此时catch关键字就会捕捉到try代码块调用的方法体中抛出的异常类的对象,并会以“(异常类 变量)”的形式来接收方法体中所抛出的异常类的对象地址,从而就直接执行catch相应异常类中的代码块。

6、assert断言语句可以在调试程序时使用,当“assert 真假表达式:为假报错消息”表达式为真时对程序的执行没有影响、表达式为假时则输出报错消息并立即结束程序的执行。

Tip: Java程序在执行时断言语句默认是关闭状态,可以在调试执行字节码文件时使用“java -ea 字节码文件”来激活断言语句。

@声明:“山月润无声”博主知识水平有限,以上文章如有不妥之处,欢迎广大IT爱好者指正,小弟定当虚心受教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/408849.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

H12-821_59

59.R1、R2、R3、R4运行IS-IS,它们接口的DIS Priority如图所示,假如设备同时启动,则()被选举为D1S.(请填写设备名称、例如R1) 答案:R4 注释: IS-IS中DIS的选举支持抢占。 假设题目说R4最后启动,问谁被选举为DIS,答案仍然是R4。

【嵌入式实践】【芝麻】【设计篇-1】从0到1给电动车添加指纹锁:项目设计思路

0. 前言 该项目是基于stm32F103和指纹模块做了一个通过指纹锁控制电动车的小工具。支持添加指纹、删除指纹,电动车进入P档等待时计时,计时超过5min则自动锁车,计时过程中按刹车可中断P档状态,同时中断锁车计时。改项目我称之为“芝…

NVIDIA Workbench 安装使用图文教程

NVIDIA Workbench 安装使用教程 文章目录 NVIDIA Workbench 安装使用教程1.安装1.1 下载软件1.2 安装软件 2.使用NVIDIA Workbench2.1 创建一个新项目 3.额外提示3.1 当我们没有停止直接关闭或者直接重启电脑后, 再打开我们已经创立的项目的时候可能会出现创建失败等错误信息.3…

Java核心-核心类与API(3)

话接上回,继续核心类与API的学习,这次介绍一下枚举类以及与系统、交互有关的类,需要了解并能使用即可。 一、枚举类 1、概述 枚举也称穷举,简单理解就是把所有可能一一列举出来(穷尽所有可能)。枚举是一…

申请攻读博士学位研究生相关模板资料(包括专家推荐信、学术简历、研究计划及范文、回复导师邮件)

申请攻读博士学位研究生相关模板资料(包括专家推荐信、学术简历、研究计划及范文、回复导师邮件) 博士是对攻读博士学位的研究生的称呼,同样也可用来称呼已获得博士学位的人员。 主要通过拥有博士点的普通高等学校和拥有博士研究生培养资格…

[SUCTF 2019]EasySQL1 题目分析与详解

一、题目介绍 1、题目来源: BUUCTF网站,网址:https://buuoj.cn/challenges 2、题目描述: 通过以上信息,拿到flag。 二、解题思路 首先打开靶机,尝试输入1查看回显,回显如图所示:…

图像读取裁剪与人脸识别

图像读取 Image read ⇒ \Rightarrow ⇒ torchvision.datasets from torchvision import datasets dataset datasets.ImageFolder(data_dir, transformtransforms.Resize((512, 512)))Return value illustration dataset[0][0]是PIL.Image objects,这利用IPyth…

数据结构-列表LinkedList

一,链表的简单的认识. 数组,栈,队列是线性数据结构,但都算不上是动态数据结构,底层都是依托静态数组,但是链表是确实真正意义上的动态数组. 为什么要学习链表? 1,链表时最简单的动态数据结构 2,掌握链表有助于学习更复杂的数据结构,例如,二叉树,trie. 3,学习链表有助于更深入…

LeetCode 1038.从二叉搜索树到更大和树

给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下, 二叉搜索树 满足下列约束条件: 节点的左子树仅包含键 小于 节点键的节点。 节点的右子树仅包含键 大于 节点键的节点。 左…

js逆向-2

#md5加密,某宝案例演示。 #免责声明:本文仅供学习使用,请勿用于其他违法行为(╥ω╥)

软件性能测试和功能测试有何联系和区别?第三方软件检测机构简析

软件性能测试和功能测试是软件开发过程中非常重要的两个环节。从根本上说,它们都是为了保证软件质量和可靠性,但它们的目标和方法却有所不同。 软件性能测试是评估软件在特定负载下的性能表现,包括响应时间、吞吐量、并发能力等指标。它通过…

MySQL 学习记录 2

原文:https://blog.iyatt.com/?p13818 13 存储引擎 查看一下前面创建的一张表的创建语句,当时并没有显式指定引擎,MySQL 自动指定的 InnoDB,即默认引擎是这个。 创建表的时候要显式指定引擎可以参考这个语句 查看当前 MySQL …

如何正确使用Postman变量?又该如何灵活设置变量?

引言 Postman变量可以帮助你快速生成测试数据、模拟不同的场景和环境。 但是,如何正确使用Postman变量?又该如何灵活设置变量?这些问题不用担心,接着往下看吧! 理解变量 为什么要使用变量? 如果在多个…

探索Java11新世界:JDK 11新特性详解

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

设计模式篇---观察者模式

文章目录 概念结构实例总结 概念 观察者模式:定义对象之间的一种一对多的依赖关系,使得每当一个对象状态发生改变时,其他相关依赖对象都得到通知并被自动更新。 观察者模式是使用频率较高的一个模式,它建立了对象与对象之间的依赖…

一文读懂列表解析、字典解析、集合解析

一、所谓解析/解析式,也称为推导/推导式,对应英语单词为comprehension,是Python的一种独有特性。解析就是从一个数据序列构建另一个新的数据序列的结构体,其本质是使用一个可迭代对象,按一定规则通过表达式、函数等运算…

Git的基本操作和原理

目录 写在前面的话 为什么要有Git(git初识)? Git安装(Centos为例) Git基本操作 创建Git本地仓库 Git配置 认识工作区、暂存区、版本库 概念认识 添加文件 查看.git文件 修改文件 版本回退 撤销修改 情况一:…

[数据集][目标检测]游泳者溺水数据集VOC+YOLO格式2类别895张

数据集制作单位:未来自主研究中心(FIRC) 数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):895 标注数量(xml文件个数)&#xff1a…

博途PLC PID仿真(单容水箱液位高度控制含变积分变增益测试)

单容水箱和双荣水箱的微分方程和数值求解,可以参考下面文章链接: https://rxxw-control.blog.csdn.net/article/details/131139432https://rxxw-control.blog.csdn.net/article/details/131139432这篇博客我们利用欧拉求解器在PLC里完成单容水箱的数学建模。PLC也可以和MATL…

SpringBoot Admin 详解

SpringBoot Admin 详解 一、Actuator 详解1.Actuator原生端点1.1 监控检查端点:health1.2 应用信息端点:info1.3 http调用记录端点:httptrace1.4 堆栈信息端点:heapdump1.5 线程信息端点:threaddump1.6 获取全量Bean的…