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)字幕文件是一种常用的字幕格式&…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...