Java---异常及处理
一.异常

1.概念
程序的非正常执行。高级语言都有异常处理机制(C++,Java)
2.一般处理异常的方法
Scanner sc = new Scanner(System.in);System.out.println("请输入一个数字:");String s = sc.nextLine();if (s.matches("[0-9]+")) {int x = Integer.parseInt(s);System.out.println("输入的数字是:" + x);
} else {System.out.println("程序异常");
}
3.异常方式
Scanner sc = new Scanner(System.in);System.out.println("请输入一个数字:");String s = sc.nextLine();if (s.matches("[0-9]+")) {int x = Integer.parseInt(s);System.out.println("输入的数字是:" + x);
} else {System.out.println("程序异常");
}
4.异常机制
4.1 try
探测代码块是否有异常
try{语句块...
}
4.2 catch
异常捕获
cacth(异常对象 e){}

4.3 finally
有无异常一定执行。异常机制中
在Java中,finally块通常用于释放资源、执行清理操作或记录错误。finally块总是会在try或catch块之后执行,无论是否出现异常。如果try块中没有出现异常,finally块将在try块之后立即执行;如果try块中出现异常,finally块将紧随catch块执行。
4.4 throws
方法上,声明方法内有异常,异常类型

4.5 throw
抛出异常对象
throw new 异常();
public static void f() throws Exception{int a = 1;int b = 0;if(b==0) throw new Exception("除0异常");
}
5.异常体系

6.自定义异常
package com.ffyc.exception;public class MyException01 extends Exception{public MyException01(String msg){super(msg);}
}class MyException02 extends RuntimeException{public MyException02(String msg){super(msg);}
}class testMyException01{public static void test01() throws MyException01{throw new MyException01("自定义异常继承Exception");}public static void test02(){throw new MyException02("自定义异常继承RuntimeException");}public static void main(String[] args) {test02();try {test01();} catch (MyException01 e) {throw new RuntimeException(e);}}
}
7.图书系统
7.1借书
业务流程,电脑查编号,bookshell找书
package com.ffyc.service;import com.ffyc.entity.Book;//接口
public interface IBookService {Book borrowBook(String title);
}
package com.ffyc.exception;//实现
public class BookException extends RuntimeException{public BookException(String msg){super(msg);}
}
package com.ffyc.entity;import java.util.Date;public class Book {private String title;private String author;private String content;private String status;private Date borrowDate;private double price;public Book(){}public Book(String title, String author, String content, String status, Date borrowDate, double price) {this.title = title;this.author = author;this.content = content;this.status = status;this.borrowDate = borrowDate;this.price = price;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getStatus() {return status;}public void setStatus(String status) {this.status = status;}public Date getBorrowDate() {return borrowDate;}public void setBorrowDate(Date borrowDate) {this.borrowDate = borrowDate;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Book{" +"title='" + title + '\'' +", author='" + author + '\'' +", content='" + content + '\'' +", status='" + status + '\'' +", borrowDate=" + borrowDate +", price=" + price +'}';}
}
package com.ffyc.service.impl;import com.ffyc.entity.Book;
import com.ffyc.exception.BookException;
import com.ffyc.service.IBookService;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class BookServiceImpl implements IBookService {private List<Book> books = new ArrayList<Book>();{books.add(new Book("西游记","武建军","我的大学生活","在库",null,33.44));}public Book borrowBook(String title) {Iterator<Book> it = books.iterator();while (it.hasNext()){Book book = it.next();if (book.getTitle().equals(title) && book.getStatus().equals("在库")){return book;}}throw new BookException("图书已借出或丢失");}public static void main(String[] args) {IBookService ibs = new BookServiceImpl();Book book = ibs.borrowBook("西游记");System.out.println(book);}
}
相关文章:
Java---异常及处理
一.异常 1.概念 程序的非正常执行。高级语言都有异常处理机制(C,Java) 2.一般处理异常的方法 Scanner sc new Scanner(System.in);System.out.println("请输入一个数字:");String s sc.nextLine();if (s.matches("[0-9]&qu…...
【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…...
添加vscode插件C/C++ snippets,快速生成LVGL .c/.h文件模版
文章目录 一、安装插件二、在安装目录下添加c.json和cpp.json文件①在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 c.json 并填入如下内容:②在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 cpp.json 并填入如下内容…...
ee trade:如何辨别足金真假
足金,顾名思义,就是含金量非常高的黄金,通常指含金量等于或大于 99% 的黄金,俗称 “二九金”。它在金饰界拥有着不可撼动的地位,深受消费者喜爱。那么,如何判断足金的真假,才能买到货真价实的足…...
GCC使用入门
文章目录 GCC简介单个文件编译过程预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking) 多文件编译过程头文件搜索路径三种不推荐的方法两种推荐的方法 库文件静态库文件创建和使用静态库链接顺序 动态库文件创建和使用动态库 Warning编译选项调试信息(-g)编译…...
CSS3 字体
CSS3 字体 CSS3字体是网页设计和开发中的一个重要方面,它允许设计师使用各种字体来增强网页的视觉效果和用户体验。在本文中,我们将探讨CSS3字体的基本概念、特性、使用方法以及最佳实践。 1. CSS3字体基本概念 CSS3字体是指使用CSS3样式表来控制网页…...
LeetCode题练习与总结:为运算表达式设计优先级--241
一、题目描述 给你一个由数字和运算符组成的字符串 expression ,按不同优先级组合数字和运算符,计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。 生成的测试用例满足其对应输出值符合 32 位整数范围,不同结果的数量不超过 10^…...
金融科技革命:API接口开放平台,畅通金融服务之路
金融科技是近年来蓬勃发展的领域,它利用先进的技术手段来改善和创新金融服务。在金融科技的革命中,API接口开放平台扮演着重要的角色,它通过提供统一的接口服务,让金融机构和其他行业能够更方便地进行数据交换和合作。本文将以挖数…...
Java8后新特性介绍
1.接口私有方法(Java9) 在Java9之前,interface接口只能定义abstract抽象方法和default默认方法。如果有多个默认方法使用了相同的处理逻辑,那只能写重复代码,或者再单独建个类进行调用。Java9解决了此类问题ÿ…...
Arthas monitor(方法执行监控)
文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.1 monitor(方法执行监控)举例1:监控demo.MathGame类,并且每5S更新一次状态。 二、命令列表 2.3 monitor/watch/trace/stack/tt 相关 使用场景: monit…...
语言的副作用
副作用产生于表达式中有至少一处计算,且其中全部或部分计算会影响表达式其他项,这可能产生副作用。编译器的优化很可能凸显副作用。 赋值 副作用并非都是有害的,比如基本的赋值 a b, 对a而言是产生副作用,但完成了赋值要求。 序…...
centos磁盘逻辑卷LVM创建
centos磁盘逻辑卷LVM创建 一、磁盘逻辑卷LVM说明二、centos磁盘使用情况三、LVM安装指南1.LVM工具安装1. yum list lvm2. yum search lvm3. yum search pvcreate4. yum list lvm25. yum install lvm2 2.创建物理卷2.1磁盘情况查看2.2创建物理卷(PV) 3.创…...
BUUCTF蜘蛛侠呀
解压后发现是流量包,好多icmp包 发现icmp包尾部有$$STRAT打头16进制的字符串,好多重复得。我们只需要提取尾部这些字符串是当icmp的type0时上图标识为褐色的字符串,还需要把16进制的字符串转为对应的字符串(bytes 类型)…...
大数据新视界 --大数据大厂之基于 MapReduce 的大数据并行计算实践
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
win自带录屏怎么用?让视频制作更简单!
win自带录屏怎么用?Windows系统内置的录屏功能,以其便捷高效著称,轻松满足多样化需求。无论是快速捕捉会议要点、制作教学视频,还是直播精彩游戏瞬间,都能一键启动,无缝录制。无需额外安装软件,…...
修改Kali Linux的镜像网站
由于官方的镜像可能会出现连接不上的问题导致无法安装我们所需要的包,所以需要切换镜像站为国内的,以下是一些国内常用的Kali Linux镜像网站,它们提供了与Kali Linux官方网站相同的软件包和资源,但访问速度更快: 清华…...
Docker精讲:基本安装,简单命令及核心概念
docker服务部署 docker是一个容器管理工具,其内部容器才是具体服务,所以我们在安装docker时不需要有太多定制内容,只需要通过yum安装即可 1. 更新系统包 #更新现有依赖包,防止现有依赖包版本过低影响docker安装 yum update2. 安…...
利用git将项目上传到github
采用git而不是在pycharm中共享的原因:可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库,添加文件,上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库,添加文件,上传代码...
828华为云征文 | 华为云X实例CPU性能测试详解与优化策略
目录 引言 1. 测试环境搭建 1.1 测试实例的选择 1.2 CPU性能测试工具介绍 1.3 安装和配置Sysbench 2. CPU性能测试方法 2.1 测试场景设定 2.2 Sysbench单线程CPU性能测试 2.3 Sysbench多线程CPU性能测试(4线程) 2.4 高强度多线程CPU性能测试&a…...
ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?视频加字幕超简单!
ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?在视频制作和观看过程中,添加字幕是一项常见的需求,特别是对于外语视频或需要辅助阅读的场景。ASS(Advanced SubStation Alpha)字幕文件是一种常用的字幕格式&…...
基于GitHub Actions的AI智能体exoclaw-github部署与实战指南
1. 项目概述:在GitHub里养一只会看代码的“螃蟹” 如果你在GitHub上管理一个开源项目,肯定遇到过这样的场景:新开的Issue描述不清,你得花时间追问细节;PR提交上来,你需要逐行审阅代码,思考哪里…...
Hermes Agent:引爆企业AI革命!自进化智能体协作实战与落地指南
Hermes Agent 是一款自进化AI代理系统,具备完整学习循环、跨会话记忆、用户建模等核心特性。本文深入解析其架构、多智能体协作机制及自进化能力,并通过智能客服、DevOps自动化、数据分析等企业级案例,展示如何构建高效AI代理系统。同时提供性…...
DeepFlow:基于eBPF与Wasm的零代码全栈可观测性平台实战解析
1. 项目概述:从零代码到全栈可观测,DeepFlow 如何重塑云原生与AI应用的监控体验 如果你正在管理一个由微服务、容器和AI模型构成的复杂云原生环境,那么“可观测性”这个词对你来说,可能既熟悉又头疼。熟悉的是,你知道没…...
硬件相关项目内容介绍(硬件咱们也有相关技术支持内容哦)
硬件相关项目内容介绍(硬件咱们也有相关技术支持内容哦) 硬件咱们也有相关技术支持内容哦。 主要看大家喜欢什么,硬件内容咱们会不定期更新分享,大家要是喜欢,后续就安排上实物实操。也虚心听取大家建议,不…...
国产替代之SFT1452-H与VBFB1251K参数对比报告
N沟道功率MOSFET参数对比分析报告一、产品概述SFT1452-H:安森美(onsemi)N沟道功率MOSFET,耐压250V,低导通电阻,ESD门极保护,符合无卤素标准。封装:IPAK (TO-251)。适用于通用开关应用…...
网安信息收集
声明:任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全 的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安…...
一图定胜负|虎贲等考 AI 科研绘图:零代码画出期刊级学术图,让论文颜值与专业度双在线
据 Nature 统计,超 90% 的审稿人先看图表,65% 的初审意见直接来自图表质量,一张规范、清晰、专业的学术图,直接影响论文录用与答辩评分。可现实是:Origin、Visio 难学难精通,PPT 做图粗糙不规范,…...
STM32实战:用HAL库搞定RS485 Modbus液压传感器数据采集(附自动收发电路避坑)
STM32实战:HAL库驱动RS485 Modbus液压传感器全流程解析 液压系统压力监测的稳定性往往取决于传感器数据采集的可靠性。在工业现场,RS485总线搭配Modbus RTU协议已成为液压传感器数据传输的黄金标准。本文将深入探讨基于STM32 HAL库的完整解决方案&#x…...
从Arrays.fill()到Stream API:Java二维数组初始化的几种高效写法与性能对比
从Arrays.fill()到Stream API:Java二维数组初始化的几种高效写法与性能对比 在算法竞赛和数据处理应用中,二维数组的初始化往往是性能优化的第一个瓶颈。我曾在一个图像处理项目中,因为选择了不当的初始化方式,导致整体性能下降了…...
IC场景XR全息通信_CSDN
6G IC场景XR/全息通信技术深度分析 摘要: 6G时代的沉浸式通信(Immersive Communication, IC)是实现"存在感"传输的核心场景,其中XR与全息通信技术对网络提出了Tbps级速率和亚毫秒级延迟的极限需求。本文从技术需求量化、…...
