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

Java异常

异常的体系结构

在java的Throwable下有Error和Exception两个子类

  • Error(错误):程序运行中出现了严重的问题,非代码性错误,无法处理,常见的有虚拟机运行错误和内存溢出等
  • Exception(异常):是由于代码本身造成的问题,可以进行处理,异常一个可以分为运行时异常编译时异常
    在这里插入图片描述
    运行时异常(unchecked exception):在Exception类下RuntimeException类以及其下面所有的子类都是运行时异常;运行时异常只有在程序运行时才能被发现,编译期间不能被发现
    编译时异常(checked exception):在Exception类下除了RuntimeException类及其子类其他的异常都是编译时异常;如果有编译时异常(异常不被处理)程序不能通过编译

异常的抓抛模型

抓抛模型分为抓和抛两个过程

  • : 程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应有异常类的对象,并将此对象抛出给程序的调用者,一旦抛出对象后其后的代码就不再执行
  • :异常的抓取也就是对异常的两种处理方式( try-catch-finally方式和throws+异常类型方式)
    方式一:try-catch-finally
    使用try将可能有问题的代码包裹起来;发生异常后自动生成一个对应类型的异常对象,此后会根据catch中的异常类型匹配,匹配到对应的catch后进入catch中进行异常处理,完成处理后跳出try-catch结构(如果有finally执行finally中代码)继续执行后面的代码
public void fileTest() throws IOException {try{//拿到文件字节流FileInputStream fis = new FileInputStream("E:/upload/test2.txt");InputStreamReader isr = new InputStreamReader(fis);...}catch(IOException e){//catch声明的异常类型如果没有子父类关系,声明先后没有关系,如果存在子父类关系,则子类声明在父类之前,否则报错....//处理异常//常用异常的处理方法://e.getMessage();//e.printStackTrace();}finally{fis.close();//关闭输入流//像数据库连接,输入输出流,socket等资源,JVM是不能自己回收的,需要自己手动释放,这些资源的释放应该放在finally中}}

注意:
方式二:throws+异常类型
发生异常后还会生成一个异常对象;抛出异常对象后不再执行后面的代码,throws只是将异常抛给了方法的调用者,并不能真正的解决异常。
对父类的方法重写抛出异常: 子类抛出的异常不能大于父类抛出的异常
子类重写父类的方法,父类没有异常,子类也不能抛出异常,只能用try-catch立马解决。
手动抛出异常

throw new 异常类();

自定义异常
1.继承现有的异常结构:RuntimeException,Exception
2.提供全局变量:serialVersionUID
3.提供重载的构造器

异常链
一个父类的多个子类可能会出现多种异常,当需要将异常向上传递的时候,父类可以抛出的异常一定要大于子类的异常,在传递过程中会造成异常信息的丢失,从而给后面的维护工作造成麻烦。可以通过在子类的catch中手动的throw一个异常写明抛出异常的原因,然后将这个异常继续向上抛出,从而形成一个异常链,保留最原本发生异常的信息。

public class Test {public void f1() throws MyException {try {FileReader reader = new ...} catch (FileNotFoundException e) {throw new MyException("文件没有找到", e);}}public void f2() throws MyException {try {f1();} catch (MyException e) {throw new MyException("文件没有找到", e);}}public static void main(String[] args) {Test t = new Test();try {t.f2();} catch (MyException e) {e.printStackTrace();}}

相关文章:

Java异常

异常的体系结构 在java的Throwable下有Error和Exception两个子类 Error(错误):程序运行中出现了严重的问题,非代码性错误,无法处理,常见的有虚拟机运行错误和内存溢出等Exception(异常):是由于代码本身造成的问题,可以进行处理,异常一个可以分为运行时异常和编译时异常 运行…...

别克GL8改装完工,一起来看看效果

①豪华商务头等舱 别克GL8作为商务车,不管是家用还是商务接待,原车内饰都太掉档次了,所以车主要求全部换掉。>>织布座椅换成航空座椅 主副驾:改装纳帕皮 中排:改装水晶宝座豪华版航空座椅,带通风、加…...

mac 中 shell 一些知识

mac 设置环境变量首先得看你所使用的 shell shell 是一个命令行解释器,顾名思义就是机器外面的一层壳,用于人机交互,只要是人与电脑之间交互的接口,就可以称为 shell。表现为其作用是用户输入一条命令,shell 就立即解…...

CentOS 配置FTP(开启VSFTPD服务)

网上已经有很多关于VSFTPD的配置,但有两个通病,要么就是原理介绍太多,要么就是不完整,操作下来又要查询多篇文章才能用。 我这里不讲原理,只记录操作,尽可能通过复制下面的操作可以实现FTP读写功能。方便自…...

Http的请求方法

Http的请求方法对应的数据传输能力把Http请求分为Url类请求和Body类请求 1.Url类请求包括但不限于GET、HEAD、OPTIONS、TRACE 等请求方法 2.Body类请求包括但不限于POST、PUSH、PATCH、DELETE 等请求方法。 3.原因:get请求没有请求体(好像也可以…...

Python字典-- 内附蓝桥题:统计数字

字典 ~~不定时更新🎃,上次更新:2023/02/28 🗡常用函数(方法) 1. dic.get(key) --> 判断字典 dic 是否有 key,有返回其对应的值,没有返回 None 举个栗子🌰 dic …...

文本处理工具

Grep工具的基本使用grep作用:grep是行过滤工具;用于根据关键字进行行过滤提示:通过alias命令设置grep别名,搜索参数时带颜色显示alias grepgrep colorauto 命令语法格式:grep [选项] 参数 文件名grep命令选项&#xff…...

C++STL详解(三)——vector的介绍和使用

文章目录vector的介绍vector的使用vector的定义方式vector的空间增长问题reserve和resizevector的迭代器使用begin 和endrbegin和rendinsert 和erasefind函数元素访问vector迭代器失效问题1:inserse插入扩容时空间销毁造成野指针问题2:erase删除或者inse…...

GEBCO海洋数据下载

一、数据集简介 GEBCO(General Bathymetric chart of the Oceans)旨在为世界海洋提供最权威的、可公开获取的测深数据集。 目前的网格化测深数据集,即GEBCO_2022网格,是一个全球海洋和陆地的地形模型,在15角秒间隔的…...

【C++容器】vector、map、hash_map、unordered_map四大容器的性能分析【2023.02.28】

摘要 vector是标准容器对数组的封装,是一段连续的线性的内存。map底层是二叉排序树。hash_map是C11之前的无序map,unordered_map底层是hash表,涉及桶算法。现对各个容器的查询与”插入“性能做对比分析,方便后期选择。 测试方案…...

ACM-蓝桥杯训练第一周

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石.CSDN 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​ 📣系列专栏:ACM周训练题目合集.CSDN 💬总结&#xff1a…...

python基础—字符串操作

(1)字符串: Python内置了一系列的数据类型,其中最主要的内置类型是数值类型、文本序列(字符串)类型、序列(列表、元组和range)类型、集合类型、映射(字典)类型…...

【Spring】通过JdbcTemplate实现CRUD操作

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 通过JdbcTemplate实现 增删查改一、添加相关依…...

实战|掌握Linux内存监视:free命令详解与使用技巧

文章目录前言一. free命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看free相关的信息3.2 以MB的形式显示内存的使用情况3.3 以总和的形式显示内存的使用情况3.4 周期性的查询内存的使用情况3.5 以更人性化的形式来查看内存的结果输出四. free在脚本中的应用总结前言 大家…...

嵌入式入门必看!调试工具安装——基于 AM64x核心板

本章节内容是为评估板串口安装USB转串口驱动程序。驱动适用于CH340、CH341等USB转串口芯片。 USB转串口驱动安装 适用安装环境:Windows 7 64bit、Windows 10 64bit。 本文测试板卡为创龙科技SOM-TL64x核心板,它是一款基于TI Sitara系列AM64x双核ARM Cortex-A53 + 单/四核Cort…...

JAVA开发(java类加载过程)

1、java语言的平台无关性。 因为java语言可以跑在java虚拟机上,所以只要能装java虚拟机的地方就能跑java程序。java语言以后缀名 .java为文件扩展名。通过java编译器javac编译成字节码文件.class 。java字节码文件通过java虚拟机解析运行。所以java语言可以说是编译…...

【vulhub漏洞复现】Thinkphp 2.x 任意代码执行

一、漏洞详情影响版本 thinkphp 2.x但是由于thinkphp 3.0版本在Lite模式下没有修复该漏洞,所以也存在该漏洞漏洞原因:e 和 /e模式匹配路由:e 配合函数preg_replace()使用, 可以把匹配来的字符串当作正则表达式执行; /e 可执行模式&#xff0c…...

LeetCode 1145. 二叉树着色游戏 -- 简单搜索

二叉树着色游戏 提示 中等 199 相关企业 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 最开始时: 「一…...

HyperGBM的三种Early Stopping方式

本文作者:杨健,九章云极 DataCanvas 主任架构师 很多机器学习框架如都提供了Early Stopping策略,主要用来防止模型过拟合。和模型训练提前停止的目标不同,AutoML的Early Stopping策略更多考虑的是算力消耗和模型质量的平衡。 通…...

心系区域发展,高德用一体化出行服务平台“聚”力区域未来

交通,是城市的血脉。通过对人、资源、产业的连接,交通建设往往是城市和区域经济发展的前提。不过,在度过了“要想富,先修路”的初级建设阶段后,交通产业内部也出现了挑战,诸如城市秩序、发展成本、用户使用…...

AI画图_stable-diffusion-webui安装使用指南(1)

本文章适用于: 有一定学习能力和钻研能力,遇到问题能合理使用搜索引擎尝试解决问题的人想在windows系统中尝试使用AI作画工具stable-diffusion-webui进行绘画的人有一定的计算机基础(会魔法上网、知道 python和Git)和英文阅读能力的人显卡为…...

浅谈MySQL主从复制

目录 1.MySQL主从复制是什么 2.MySQL主从复制的意义 3.MySQL主从复制原理 4.数据同步一致性问题 5.实现方式 1.MySQL主从复制是什么 MySQL主从复制就是指数据可以从一台MySQL的主节点复制到一个或多个从节点。 MySQL默认采用异步复制方式,这样从节点不用一直访…...

docker-compose安装kafka和php简单测试

docker-compose.yml内容: version: 3.1 services: zookeeper: container_name: zookeeper image: zookeeper:3.6 ports: - 2181:2181 kafka: image: wurstmeister/kafka container_name: kafka depends_on: - zookeeper …...

【蓝桥云课】快速幂

问题描述:快速求aba^bab 方法一:常规方法相乘a∗a∗a∗a∗...∗aa*a*a*a*...*aa∗a∗a∗a∗...∗a 方法二:分治方法求aba^bab ab{1,b0a,b1ab2⋅ab2,b为偶数ab−12⋅ab12,b为奇数a^b\begin{cases} 1& \text{,b0}\\ a& \text{,b1}\\ a…...

解决windows安装wxPython安装失败、速度过慢及PyCharm上wx包爆红问题

网上关于wxPython安装失败,安装速度过慢,以及安装成功后PyCharm中import wx仍然爆红的文章有很多,也特别杂,解决起来特别困难,今天在这里对问题的处理进行一个整合,希望能帮助到大家。 安装wxPython这里运用…...

封装小程序request请求[接口函数]

在这篇小程序API的Promise化文章中讲到小程序官方提供的异步API都是基于回调函数来实现的,在大量的使用这种回调函数就会造成回调地狱的问题,以及代码的可读性和可维护性差,通过对小程序API的Promise化能解决,那么本篇是来讲进行对…...

嵌入式 STM32 通讯协议--MODBUS

目录 一、自定义通信协议 1、协议介绍 2、网络协议 3、自定义的通信协议 二、MODBUS通信协议 1、概述 2、MODBUS帧结构 协议描述 3、MODBUS数据模型 4、MODBUS事务处理的定义 5、MODBUS功能码 6、功能码定义 7、MODBUS数据链路层 8、MODBUS地址规则 9、MO…...

互联网人看一看,这些神器你用过哪些?

很多小伙伴在剪辑视频的过程中经常可以看到一些语音素材,经常刷视频的小伙伴也可以看到很多视频中经常出现一些AI合成的声音或者音效,这些配音可以给视频增添很多亮点!那么大家都是怎么将文字转语音的呢?今天给大家分享5款非常专业…...

Kotlin学习:5.2、异步数据流 Flow

Flow一、Flow1、Flow是什么东西?2、实现功能3、特点4、冷流和热流5、流的连续性6、流的构建器7、流的上下文8、指定流所在协程9、流的取消9.1、超时取消9.2、主动取消9.3、密集型任务的取消10、背压和优化10.1、buffer 操作符10.2、 flowOn10.3、conflate 操作符10.…...

EPICS synApps介绍

一、synApps是什么? 1) 一个用于同步束线用户的EPICS模块集合。 2) EPICS模块 alive, autosave, busy, calc, camac, caputRecorder, dac128V, delaygen, dxp, ip, ip330, ipUnidig, love, mca, measComp, modbus, motor, optics, quadEM,…...

为什么几年前做的网站视频看不了/seo搜索引擎入门教程

杂牌蓝牙在2003系统使用新驱动的破解方法!--------------------------------------------------------------------------------现在最为流行的蓝牙驱动有三个:微星的bt49、任意品牌的1.4.1.6版和最新的1.4.2 Build 10版驱动。本文使用的1.4.1.6版和1.4.…...

网站正能量晚上不用下载直接进入/外贸软件排行榜

学生成绩管理系统(四):界面优化 一、流程描述 1.首先在进入系统主界面之前,我们需要进行管理员的登录,需要输入管理员的账户和密码: 2.在输入管理员的用户名和密码之后就可以进入到系统的主页面&#xff1a…...

vs做网站如何输出/百度推广云南总代理

转载自「LeanCloud通讯」公众号 作者:LeanCloud 郑鹏2018 年 12 月,Google 发布了 Flutter 1.0 正式版,似乎再次点燃了人们对移动跨平台开发的热情。上一次出现类似的情况,是在 15 年年初,Facebook 发布 React Native …...

wordpress侧边栏tab/网络推广策划书

WinForm 之 窗口最小化到托盘及右键图标显示菜单 Form最小化是指整个Form都缩小到任务栏上,但是窗体以Form的标题栏形式显示在任务栏上, 若是想让Form以Icon的形式显示在任务栏右下角,则需要给Form添加一个NotifyIcon控件。 一、添加NotifyIc…...

电子商务网站建设文案/福州seo视频

新智元报道来源:武汉大学等编辑:白峰、张佳【新智元导读】武汉大学的一位大三学生花了3、4个小时,用代码敲出樱花开放,一朵朵樱花由无数个“武汉加油”汇聚在一起,每个字都是一个像素点,网友纷纷点赞&#…...

网站建设市场行情分析/广州网络营销公司

C 标准模板库 STL 顺序容器 容器数据结构顺序性重复性支持迭代器vector动态数组无序可重复随机访问迭代器deque双向队列无序可重复随机访问迭代器list双向链表无序可重复双向迭代器 动态数组 vector ​ vector #include <vector> 动态数组&#xff1a;其元素在内存中是…...