当前位置: 首页 > news >正文

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.概念 程序的非正常执行。高级语言都有异常处理机制&#xff08;C&#xff0c;Java&#xff09; 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 &#xff0c;文末自助获取源码 \color{red}{T041&#xff0c;文末自助获取源码} T041&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料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 并填入如下内容&#xff1a;②在 C:/Users/yourname/AppData/Roaming/Code/User/snippets/ 目录下创建 cpp.json 并填入如下内容…...

ee trade:如何辨别足金真假

足金&#xff0c;顾名思义&#xff0c;就是含金量非常高的黄金&#xff0c;通常指含金量等于或大于 99% 的黄金&#xff0c;俗称 “二九金”。它在金饰界拥有着不可撼动的地位&#xff0c;深受消费者喜爱。那么&#xff0c;如何判断足金的真假&#xff0c;才能买到货真价实的足…...

GCC使用入门

文章目录 GCC简介单个文件编译过程预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking) 多文件编译过程头文件搜索路径三种不推荐的方法两种推荐的方法 库文件静态库文件创建和使用静态库链接顺序 动态库文件创建和使用动态库 Warning编译选项调试信息(-g)编译…...

CSS3 字体

CSS3 字体 CSS3字体是网页设计和开发中的一个重要方面&#xff0c;它允许设计师使用各种字体来增强网页的视觉效果和用户体验。在本文中&#xff0c;我们将探讨CSS3字体的基本概念、特性、使用方法以及最佳实践。 1. CSS3字体基本概念 CSS3字体是指使用CSS3样式表来控制网页…...

LeetCode题练习与总结:为运算表达式设计优先级--241

一、题目描述 给你一个由数字和运算符组成的字符串 expression &#xff0c;按不同优先级组合数字和运算符&#xff0c;计算并返回所有可能组合的结果。你可以 按任意顺序 返回答案。 生成的测试用例满足其对应输出值符合 32 位整数范围&#xff0c;不同结果的数量不超过 10^…...

金融科技革命:API接口开放平台,畅通金融服务之路

金融科技是近年来蓬勃发展的领域&#xff0c;它利用先进的技术手段来改善和创新金融服务。在金融科技的革命中&#xff0c;API接口开放平台扮演着重要的角色&#xff0c;它通过提供统一的接口服务&#xff0c;让金融机构和其他行业能够更方便地进行数据交换和合作。本文将以挖数…...

Java8后新特性介绍

1.接口私有方法&#xff08;Java9&#xff09; 在Java9之前&#xff0c;interface接口只能定义abstract抽象方法和default默认方法。如果有多个默认方法使用了相同的处理逻辑&#xff0c;那只能写重复代码&#xff0c;或者再单独建个类进行调用。Java9解决了此类问题&#xff…...

Arthas monitor(方法执行监控)

文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.1 monitor&#xff08;方法执行监控&#xff09;举例1&#xff1a;监控demo.MathGame类&#xff0c;并且每5S更新一次状态。 二、命令列表 2.3 monitor/watch/trace/stack/tt 相关 使用场景&#xff1a; monit…...

语言的副作用

副作用产生于表达式中有至少一处计算&#xff0c;且其中全部或部分计算会影响表达式其他项&#xff0c;这可能产生副作用。编译器的优化很可能凸显副作用。 赋值 副作用并非都是有害的&#xff0c;比如基本的赋值 a b, 对a而言是产生副作用&#xff0c;但完成了赋值要求。 序…...

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创建物理卷&#xff08;PV&#xff09; 3.创…...

BUUCTF蜘蛛侠呀

解压后发现是流量包&#xff0c;好多icmp包 发现icmp包尾部有$$STRAT打头16进制的字符串&#xff0c;好多重复得。我们只需要提取尾部这些字符串是当icmp的type0时上图标识为褐色的字符串&#xff0c;还需要把16进制的字符串转为对应的字符串&#xff08;bytes 类型&#xff09…...

大数据新视界 --大数据大厂之基于 MapReduce 的大数据并行计算实践

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

win自带录屏怎么用?让视频制作更简单!

win自带录屏怎么用&#xff1f;Windows系统内置的录屏功能&#xff0c;以其便捷高效著称&#xff0c;轻松满足多样化需求。无论是快速捕捉会议要点、制作教学视频&#xff0c;还是直播精彩游戏瞬间&#xff0c;都能一键启动&#xff0c;无缝录制。无需额外安装软件&#xff0c;…...

修改Kali Linux的镜像网站

由于官方的镜像可能会出现连接不上的问题导致无法安装我们所需要的包&#xff0c;所以需要切换镜像站为国内的&#xff0c;以下是一些国内常用的Kali Linux镜像网站&#xff0c;它们提供了与Kali Linux官方网站相同的软件包和资源&#xff0c;但访问速度更快&#xff1a; 清华…...

Docker精讲:基本安装,简单命令及核心概念

docker服务部署 docker是一个容器管理工具&#xff0c;其内部容器才是具体服务&#xff0c;所以我们在安装docker时不需要有太多定制内容&#xff0c;只需要通过yum安装即可 1. 更新系统包 #更新现有依赖包&#xff0c;防止现有依赖包版本过低影响docker安装 yum update2. 安…...

利用git将项目上传到github

采用git而不是在pycharm中共享的原因&#xff1a;可能会出现上图报错 目录 1、创建github仓库2、在 git bash 中初始化Git仓库&#xff0c;添加文件&#xff0c;上传代码 1、创建github仓库 2、在 git bash 中初始化Git仓库&#xff0c;添加文件&#xff0c;上传代码...

828华为云征文 | 华为云X实例CPU性能测试详解与优化策略

目录 引言 1. 测试环境搭建 1.1 测试实例的选择 1.2 CPU性能测试工具介绍 1.3 安装和配置Sysbench 2. CPU性能测试方法 2.1 测试场景设定 2.2 Sysbench单线程CPU性能测试 2.3 Sysbench多线程CPU性能测试&#xff08;4线程&#xff09; 2.4 高强度多线程CPU性能测试&a…...

ass字幕文件怎么导入视频mp4?ass字幕怎么编辑?视频加字幕超简单!

ass字幕文件怎么导入视频mp4&#xff1f;ass字幕怎么编辑&#xff1f;在视频制作和观看过程中&#xff0c;添加字幕是一项常见的需求&#xff0c;特别是对于外语视频或需要辅助阅读的场景。ASS&#xff08;Advanced SubStation Alpha&#xff09;字幕文件是一种常用的字幕格式&…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...