【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爱好者指正,小弟定当虚心受教!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通天星CMSV6 车载视频监控平台信息泄露漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

【Python-语法】

Python-语法 ■ Python基础■ 数据类型■ 注释 单行注释,多行注释■ 编码方式 ■■■■■ ■ Python基础 ■ 数据类型 ■ 注释 单行注释,多行注释 ■ 编码方式 ■ ■ ■ ■ ■

【深度学习】微调通义千问模型:LoRA 方法,微调Qwen1.8B教程,实践

官网资料: https://github.com/QwenLM/Qwen/blob/main/README_CN.md 文章目录 准备数据运行微调设置网络代理启动容器执行 LoRA 微调修改 finetune/finetune_lora_single_gpu.sh运行微调 执行推理 在本篇博客中,我们将介绍如何使用 LoRA 方法微调通义千问模型&#…

Unity 2021.3发布WebGL设置以及nginx的配置

使用unity2021.3发布webgl 使用Unity制作好项目之后建议进行代码清理,这样会即将不用的命名空间去除,不然一会在发布的时候有些命名空间webgl会报错。 平台转换 将平台设置为webgl 设置色彩空间压缩方式 Compression Format 设置为DisabledDecompre…

Sora:开启视频生成新时代的强大人工智能模型

目录 一、Sora模型的诞生与意义 二、Sora模型的技术特点与创新 三、Sora模型的应用前景与影响 四、面临的挑战与未来发展 1、技术挑战 2、道德和伦理问题 3、计算资源需求 4、未来发展方向 随着信息技术的飞速发展,人工智能(AI)已成为…

vue3中使用vuedraggable实现拖拽el-tree数据进分组

看效果: 可以实现单个拖拽、双击添加、按住ctrl键实现多个添加,或者按住shift键实现范围添加,添加到框中的数据,还能拖拽排序 先安装 vuedraggable 这是他的官网 vue.draggable中文文档 - itxst.com npm i vuedraggable -S 直接…

拓扑空间简介

目录 介绍集合论与映射映射相关定义映射(map)映射的一种分类:一一的和到上的 拓扑空间背景介绍开子集开子集的选择 拓扑拓扑空间常见拓扑拓扑子空间同胚其他重要定义 开覆盖紧致性有限开覆盖紧致性 R R R的紧致性 习题 介绍 这是对梁灿彬的《…

【软件架构】01-架构的概述

1、定义 软件架构就是软件的顶层结构 RUP(统一过程开发)4 1 视图 1)逻辑视图: 描述系统的功能、组件和它们之间的关系。它主要关注系统的静态结构,包括类、接口、包、模块等,并用于表示系统的组织结构…

C++入门学习(三十六)函数的声明

程序是自上而下运行的&#xff0c;比如我下面的代码&#xff1a; #include <iostream> #include<string> using namespace std;int main() { int a1; int b2;int sumaddNumbers(a,b); cout<<sum;return 0; }int addNumbers(int a, int b) { int sum …

MFC 配置Halcon

1.新建一个MFC 工程&#xff0c;Halcon 为64位&#xff0c;所以先将工程改为x64 > VC 目录设置包含目录和库目录 包含目录 库目录 c/c ->常规 链接器 ->常规 > 链接器输入 在窗口中添加头文件 #include "HalconCpp.h" #include "Halcon.h"…

简单讲解并梳理微信小程序默认几个文件和文件夹结构及其作用

那么 我们来说一下 小程序整个项目结构 它各个文件 和 整体结构 这是我们新创建的一个小程序项目 我们从上到下 分别来看一下 这些文件和目录结构的作用 首先是 pages 它的作用在于存储整个项目所有的 page页面文件 我们小程序官方 是推荐我们将所有page 界面都放在pages目录…

稀疏计算、彩票假说、MoE、SparseGPT

稀疏计算可能是未来10年内最有潜力的深度学习方向之一&#xff0c;稀疏计算模拟了对人脑的观察&#xff0c;人脑在处理信息的时候只有少数神经元在活动&#xff0c;多数神经元是不工作的。而稀疏计算的基本思想是&#xff1a;在计算过程中&#xff0c;将一些不重要的参数设置为…

一招解决 vue数据格式校验时候 async-validator: [‘XXXX is not a number‘]

在vue中 amt数字需要进行纯数字校验&#xff1a; 格式都没问题&#xff0c;但是输入纯数字也会报错&#xff0c;报错如下&#xff1a; async-validator:[‘amt is not a number’] 网上找了一些&#xff0c;但是均为能奏效&#xff0c;尝试如下&#xff1a; 尝试1&#x…

基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位可视化分析推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-Android算法方面运维方面测试方面招聘岗位薪资多维度精准预测招聘岗位分析推荐 结语…

FlinkCDC详解

1、FlinkCDC是什么 1.1 CDC是什么 CDC是Chanage Data Capture&#xff08;数据变更捕获&#xff09;的简称。其核心原理就是监测并捕获数据库的变动&#xff08;例如增删改&#xff09;&#xff0c;将这些变更按照发生顺序捕获&#xff0c;将捕获到的数据&#xff0c;写入数据…

Jenkins中Publish Over SSH插件使用(1)

SSH插件 前言Publish Over SSH插件是jenkins里面必不可少的插件之一&#xff0c;主要的功能有两个把jenkins服务器上的文件&#xff0c;传输到远程nginx&#xff0c; 远程执行shell命令和脚本。 1. SSH插件下载与配置 1.1 下载Publish over SSH插件 系统管理—》管理插件 …

Python Web开发记录 Day1:HTML

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、HTML1、前端引入和HTML标签①前端引入②浏览…

Linux java查看内存消耗 linux查看java程序内存(转载)

Linux java查看内存消耗 linux查看java程序内存 目录 一、jps命令。 二、ps命令。 三、top命令。 四、free命令。 五、df命令。 查看应用的CPU、内存使用情况&#xff0c;使用jps、ps、top、free、df命令查看。 一、jps命令。 可以列出本机所有java应用程序的进程pid。…

C++ STL vector详解

1. vector简介 template<class T, class Alloc allocator<T>> class vector; vector是一个可以动态增长的数组&#xff0c;T是要存储的元素类型。vector可以像数组一样&#xff0c;用下标[]来访问元素&#xff0c;如&#xff1a; int arr[] {1,2,3,4}; for (i…

搜索专项---双向DFS模型

文章目录 送礼物 一、送礼物OJ链接 本题思路: #include <bits/stdc.h>typedef long long LL;constexpr int N1<<25;int n,m,k; int g[50]; int weight[N],cnt; int ans;void dfs1(int u,int s) {if(uk){weight[cnt]s;return;}dfs1(u1,s);if(g[u](LL)s<m) dfs1…