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);}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ViTamin——视觉-语言时代的可扩展视觉模型设计

人工智能咨询培训老师叶梓 转载标明出处 尽管视觉-语言模型&#xff08;VLMs&#xff09;已经取得了显著的成就&#xff0c;但在图像编码器的选择上&#xff0c;传统的视觉Transformer&#xff08;ViT&#xff09;依然是主流。尽管Transformer在文本编码领域已经证明了其有效性…

【C++笔记】初始模版和STL简介

【C笔记】初始模版和STL简介 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】初始模版和STL简介前言一.初始模版1.1泛型编程1.2函数模版1.3类模板 二.STL简介2.1什么是STL2.2STL的版本2.3STL的六大组件2.4STL的重要…

TypeScript概念讲解

简单来说&#xff0c;TypeScript 是 JavaScript 的一个超集&#xff0c;支持 ECMAScript 6 标准&#xff1b; TypeScript 由微软开发的自由和开源的编程语言&#xff1b; TypeScript 设计目标是开发大型应用&#xff0c;它可以编译成纯 JavaScript&#xff0c;编译出来的 Jav…

这款免费工具让你的电脑焕然一新,专业人士都在用

HiBit Uninstaller 采用单一可执行文件的形式,无需复杂的安装过程,用户可以即刻开始使用。这种便捷性使其成为临时使用或紧急情况下的理想选择。尽管体积小巧,但其功能却异常强大,几乎不会对系统性能造成任何负面影响。 这款工具的一大亮点是其多样化的功能。它不仅能够常规卸…

QT:常用类与组件

1.设计QQ的界面 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> #include <QLineEdit> #include <QLabel>//自定义类Widget,采用public方式继承QWidget&#xff0c;该类封装了图形化界面的相关操作&#xff…

第十三周:机器学习

目录 摘要 Abstract 一、生成式对抗网络&#xff08;上&#xff09; 1、引入——generator 2、discriminator 3、GAN算法 4、GAN的理论 5、GAN的训练技巧 二、word2vec——gensim实践 1、引入 2、 word2vec模型 3、fasttext模型 总结 摘要 本周学习了对GAN进行了…

栏目一:使用echarts绘制简单图形

栏目一&#xff1a;使用echarts绘制简单图形 前言1. 在线编辑图形1.1 折线图1.2 柱状图1.3 扇形图 2. 本地绘制图表2.1 下载echarts.min.js2.2 创建一个简单的图形 前言 Echarts是一款基于JavaScript的可视化图表库。它提供了丰富的图表类型和交互功能&#xff0c;可以用于在网…

qt6 使用QPSQL

qt6 自带pg数据库驱动&#xff1a; pro文件加个说明&#xff1a; 引用位置添加&#xff08;按需添加&#xff0c;这里我就大致加一下&#xff09;&#xff1a; test code: 理想情况当然是要用pool,这里只是演示调用而已 QSqlError DbTool::testConnection(const QString &…

JSON的C实现(上)

JSON的C实现&#xff08;上&#xff09; JSON的C实现&#xff08;上&#xff09;前言JSON简介JSON的C实现思路小结 JSON的C实现&#xff08;上&#xff09; 前言 JSON是众多项目中较为常见的数据交换格式&#xff0c;为不同项目、系统间的信息交换提供了一个规范化标准。JSON…

测试用例的进阶二

1. 按开发阶段划分 1.1 测试金字塔 从上到下&#xff0c;对于测试人员代码就是要求越来越低&#xff1b; 从下到上&#xff0c;越来越靠近用户&#xff1b; 从下到上&#xff0c;定位问题的成本越来越高&#xff1b; 1.2 单元测试(Unit Testing) 单元测试是对软件组成单元进…

《迁移学习》—— 将 ResNet18 模型迁移到食物分类项目中

文章目录 一、迁移学习的简单介绍1.迁移学习是什么&#xff1f;2.迁移学习的步骤 二、数据集介绍三、代码实现1. 步骤2.所用到方法介绍的文章链接3. 完整代码 一、迁移学习的简单介绍 1.迁移学习是什么&#xff1f; 迁移学习是指利用已经训练好的模型&#xff0c;在新的任务上…

Linux防火墙-常用命令,零基础入门到精通,收藏这一篇就够了

我们经过上小章节讲了Linux的部分进阶命令&#xff0c;我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#xff0c;而云服务器基本上就不会使用系统自带的防火墙&#xff0c;而是使用安全组来代替了防火墙的功能&#xff0c;可以简单理解安全组就是web版的防火墙&…

Windows环境下训练开源图像超分项目 ECBSR 教程

ECBSR 介绍 ECBSR&#xff08;Edge-oriented Convolution Block for Real-time Super Resolution&#xff09;是一种针对移动设备设计的轻量级超分辨率网络。它的核心是一种可重参数化的构建模块&#xff0c;称为边缘导向卷积块&#xff08;ECB&#xff09;&#xff0c;这种模…

Qt 首次配置 Qt Creator 14.01 for Python

前言&#xff1a; 如何用QT实现Python的配置的交互界面。本文从0开始&#xff0c;进行实践的介绍。 在上一节里面&#xff0c;我们做了社区版本的配置&#xff1a; https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…

vue+UEditor附件上传问题

&#x1f3c6;本文收录于《全栈Bug调优(实战版)》专栏&#xff0c;主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&am…

快速实现AI搜索!Fivetran 支持 Milvus 作为数据迁移目标

Fivetran 现已支持 Milvus 向量数据库作为数据迁移的目标&#xff0c;能够有效简化 RAG 应用和 AI 搜索中数据源接入的流程。 数据是 AI 应用的支柱&#xff0c;无缝连接数据是充分释放数据潜力的关键。非结构化数据对于企业搜索和检索增强生成&#xff08;RAG&#xff09;聊天…

Java SPI 原理、样例

在 Java 中&#xff0c;SPI&#xff08;Service Provider Interface&#xff09;全称为服务提供者接口&#xff0c;它是一种用于实现框架扩展和插件化的机制。 一、SPI 作用 允许在运行时动态地为接口查找服务实现&#xff0c;而不需要在代码中显式地指定具体的实现类。 这使得…

利用多模态输入的自我中心运动跟踪与理解框架:EgoLM

随着增强现实(AR)和虚拟现实(VR)技术的发展,对自我中心(第一人称视角)运动的精确跟踪和理解变得越来越重要。传统的单一模态方法在处理复杂场景时存在诸多局限性。为了解决这些问题,研究者们提出了一种基于多模态输入的自我中心运动跟踪与理解框架——EgoLM。本文将详细…

MySQL-数据库约束

1.约束类型 类型说明NOT NULL非空约束 指定非空约束的列不能存储NULL值 DEFAULT默认约束当没有给列赋值时使用的默认值UNIQUE唯一约束指定唯一约束的列每行数据必须有唯一的值PRIMARY KEY主键约束NOT NULL和UNIQUE的结合&#xff0c;可以指定一个列霍多个列&#xff0c;有助于…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《考虑异步区域调频资源互济的电能、惯性与一次调频联合优化出清模型》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…