18.异常

news2024/11/15 17:24:59

目录

一.异常

1.1 什么是异常

1.2 为什么要学习异常

1.3 异常的体系

1.5 编译时异常

1.5.1 什么是编译时异常

1.5.2 编译时异常的作用

1.5.3 常见编译时异常

1.6 运行时异常

1.6.1 什么是运行时异常

1.6.2 常见运行时异常

1.6 异常的默认处理流程(RunTimeException)

1.6.1 处理流程

1.6.2 缺点

1.7 编译时异常的处理机制

1.7.1 throws

1.7.2 try...catch...

1.7.3 throws和try...catch...结合

1.7.4 总结

1.8 运行时异常的处理机制

1.9 自定义异常

1.9.1 为什么要有自定义异常

1.9.2 自定义异常的好处

1.9.3 自定义编译时异常的定义步骤

1.9.4 自定义运行时异常的定义步骤


一.异常

1.1 什么是异常

异常是程序编译或执行的过程中可能出现的问题。注意:语法错误不算在异常体系中。

1.2 为什么要学习异常

1. 异常一旦出现了,如果没有提前处理,程序就会退出JVM虚拟机而终止。

2. 避免异常的出现,同时处理可能出现的异常,让代码更健壮。

1.3 异常的体系

Error:系统级别问题,如JVM退出等

Exception:Java.lang包下,称为异常类,它表示程序本身可以处理的问题。

RunTimeException及其子类:运行时异常,编译阶段不会报错。

除RunTimeException之外的所有异常:编译时异常,编译期必须处理的,否则程序不能通过编译。

Error我们并不关心,我们需要掌握的是 Exception

1.5 编译时异常

1.5.1 什么是编译时异常

不是RunTimeException及其子类的异常,编译阶段就报错,必须处理,否则代码不通过。

1.5.2 编译时异常的作用

是担心程序员的技术不行,在编译阶段就爆出一个错误,目的在于提醒不要出错。

1.5.3 常见编译时异常

ParseExcepton:日期解析异常

1.6 运行时异常

1.6.1 什么是运行时异常

直接继承自RunTimeException或者其子类,编译阶段不会报错,运行时可能出现的错误。

1.6.2 常见运行时异常

ArrayIndexOutOfBoundsException:数组越界异常

NullPointerException:空指针异常

ArithmeticException:数学操作异常

ClassCastException:类型转换异常

NumberFormatException:数字转换异常

1.6 异常的默认处理流程(RunTimeException

1.6.1 处理流程

1. 默认的会在出现异常的那行代码那里自动的创建一个对象:ArithmeticException。

2. 异常会从方法中抛出给调用者,调用者最终会抛出给Jvm虚拟机。

3. 虚拟机接收到异常对象后,首先在控制台输出异常栈信息,然后在出现异常点的地方干掉程序。

4. 后续代码没有机会执行了,因为程序已经死亡。

1.6.2 缺点

默认的异常处理流程并不好,一旦出现异常,程序立即死亡。

1.7 编译时异常的处理机制

编译时异常的处理形式有三种

1.7.1 throws

含义:用在方法上,可以把方法内部出现的异常抛出去给本方法的调用者处理。

优缺点:这种方式并不好,发生异常的方法自己不处理异常,如果异常最终抛出去给虚拟机,将会引起程序死亡。

格式:

优化格式(代表可以抛出一切异常):

1.7.2 try...catch...

含义:监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理。

优缺点:这种方式还可以,发生异常的方法自己独立完成异常的处理,程序可以继续往下执行。

格式:

优化格式:

1.7.3 throws和try...catch...结合

含义:方法可以通过throws将异常抛出给调用者。调用者接收到异常后直接捕获处理。

优缺点:在开发中按照规范来说第三种是最好的;底层的异常抛出去给外层,最外层集中捕获处理。

1.7.4 总结

实际开发中,只要代码能够编译通过,并且功能能够完成,那么每一种异常处理方式都是可以的。

1.8 运行时异常的处理机制

运行时异常编译阶段不会出错,是运行时才可能出错的,所以编译阶段不处理也可以。

按照规范还是处理,建议在最外层集中捕获处理即可。

1.9 自定义异常

1.9.1 为什么要有自定义异常

1. Java无法为这世界上的所有问题提供异常类。

2. 如果企业想通过异常的方式来管理自己的某个业务问题,就需要自定义异常类了。

1.9.2 自定义异常的好处

1. 可以使用异常的机制管理业务问题,如提醒程序员注意。

2. 一旦出现Bug,可以用异常的形式清晰地指出出错的地方。

1.9.3 自定义编译时异常的定义步骤

1. 定义一个异常类继承Exception。

2. 重写构造器。

3. 在出现异常的地方throw new 对象抛出。

1.9.4 自定义运行时异常的定义步骤

1. 定义一个异常类继承RunTimeException。

2. 重写构造器。

3. 在出现异常的地方throw new 对象抛出。

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

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

相关文章

web3:区块链常见的几大共识机制及优缺点

web3相关学习一并收录至该博客:web3学习博客目录大全 胡歌看了都得给我一键三连吧! 目录什么是共识?什么是共识机制?共识机制的目标为什么需要共识机制?如何评价一个共识机制的优劣:共识机制分类PoW( Proof of Work)工作量证明&a…

2023年最新!北京Java培训机构排行榜新鲜出炉!

北京作为中国的首都,其人才的需求的体量之大是其他城市不可比的。那么在北京学习Java,到底该怎么选择Java培训机构哪?怎么在众多的机构里面选择出最适合自己的哪?下面是小编根据口碑和实力整理出的北京Java培训机构排行榜单,仅供…

【Effective_Objective-C_6 块block】

文章目录前言GCD和块的简介37.理解块的概念块的基础知识块可以捕获变量内联块的用法块的内部结构全局块,栈块,堆块堆块全局块要点38.为常用的块类型创建typedef要点39.用handler块降低代码分散程度协议传值实现异步块实现异步回调操作里的块要点40.用块引…

说说redux的实现原理是什么,写出核心代码?

目录标题一、redux三大基本原则是:二、实现原理:三、如何使用一、redux三大基本原则是: 单一数据源state是只读的使用纯函数来执行修改 注意的是,redux并不是只应用在react中,还与其他界面库一起使用,如V…

3.26 haas506 2.0开发教程-example- 串口控制ESP32-CAM OV2640拍照

haas506串口控制ESP32-CAM OV2640拍照介绍ESP32-CAM开发板硬件连接代码流程代码ESP32-CAM开发板代码HaaS506开发板代码测试ESP32-CAM开发板测试介绍 通过HaaS506串口发送指令,控制ESP32-CAM进行拍照,并将照片储存在SD卡中。ESP32-CAM需要5V供电才能正常…

小程序开发常见问题总结(超实用)

小程序开发常见问题总结(超实用) 文章目录小程序开发常见问题总结(超实用)1.小程序user agent stylesheet问题。2.this.setData is not function错误3.flex布局3.1flex布局原理3.2flex父项属性3.3flex布局子项元素4.自定义组件1.在…

白银k线图基础知识梳理:包覆形态

伦敦银价格走势是国际市场上所有参与者多方合力的结果,这些参与者包括银行、白银商、期货交易商、对冲基金等金融机构、各种法人机构以及个人投资者。一根简单的K线,能够把所有市场参与者博弈的结果展示出来,并且反映出银价运行和变化的各个细…

node后端接收到axios的post请求体为空

node后端接收到axios的post请求体为空??? 使用axios发送post请求,传入了Object格式的参数,在node后端req.body接收到的参数为空,但是网页上抓包检查时,发现请求的body确实是携带了参数的&#x…

【工具】2023开年利器,重写收藏逻辑和内置白板应用的Arc浏览器

目录一、为什么你需要一款新的浏览器?二、重写的收藏夹逻辑三、自带笔记和白板的浏览器四、如何获得Arc浏览器一、为什么你需要一款新的浏览器? 人生漫漫,三年混乱。在经历了这些起伏之后,你一定有一个不断进取的决心。 工欲善其…

如何设置将SAP红灯报错改为黄灯(OBA5 更改消息控制 )

在SAP的业务操作中或者后台配置经常遇到SAP校验报红灯的错误导致业务进行不下去。可以通过OBA5 更改消息控制事务修改消息报错类型,例如把红灯报错改为黄灯,这样业务就可以进行下去了。 举两个例子来说明一下如何配置。 目录 例子1:固定资…

【stl -- 内建函数对象】

目录:前言一、仿函数二、算数仿函数三、关系仿函数四、逻辑仿函数总结前言 概念 stl内建了一些仿函数 分类 算数仿函数、 关系仿函数、 逻辑仿函数 用法 这些仿函数所产生的对象,用法和普通函数完全一样; 使用内建仿函数需要包含头文件 一、…

拉伯证券|A股大涨!外资30分钟爆买百亿!汽车股狂飙

在很多利好音讯的轮番影响下,兔年首个交易日,A股迎来大涨。沪指开盘便站上3300点整数关口,尔后继续高位震动。深证成指、创业板指涨势更甚,到午盘涨幅均超1.5%。 外资继续“高调”抢筹。Choice数据显现,今天开盘仅5分…

Maven基础学习——依赖管理

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&…

18个 SpringBoot项目中遇到的BUG,你试试

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 1.启动项目的时候报错 1.E…

从零到一,臻于至善|网易邮箱基于StarRocks 开发大数据平台的实践

作者:网易邮箱 黄贤康。现任职网易邮件事业部资深数据开发工程师,作为主要开发人员参与网易邮箱大数据平台的建立、优化、重构等工作,并取得相当的成效。他长期从事服务端应用及大数据领域的架构研发工作,对相关领域的底层架构、开…

什么是一站式人力资源管理系统?

首先什么是人力资源管理系统?简单来讲,人力资源管理系统就是帮助企业人力资源部门进行日常管理的辅助工具。人力资源部门通常需要负责企业员工管理的各个方面,无论是招聘,培训,考勤还是薪资绩效,都需要企业…

Jmeter使用手册

Jmeter使用手册Jmeter使用手册1.Jmeter安装教程下载地址Jmeter环境变量配置启动应用实例1.Jmeter安装教程下载地址https://jmeter.apache.org/download_jmeter.cgiJmeter环境变量配置新建变量名称:JMETER_HOME值为:D:\work_tools\apache-jmeter-5.5添加到path:%JMETER_HOME%\bi…

服务器应该如何做好防护以及被攻击之后如何处理

服务器是每个软件运行的基础,也是运行过程中最重要的一部分,所以在运行的过程中,服务器会受到黑客的不法攻击,那么服务器我们应该如何做好防护以防被攻击呢!接下来小蚁君给大家一一讲解。首先可以安装最新的安全补丁&a…

仪表板展示 | DataEase看中国:数据呈现中国能源发展情况

背景介绍 能源是经济发展的基石,能源的供给与人们生活和经济发展息息相关。二十大报告强调:“要积极稳妥推进碳达峰碳中和,立足我国能源资源禀赋,坚持先立后破,有计划分步骤地实施碳达峰行动。深入推进能源革命&#…

Elasticsearch使用篇 - 更新文档

更新的内部机制 注意:实际使用 murmurhash 算法 注意:更新任何一个字段都是全部删除。并发更新操作之间无事务隔离保证,会产生数据错位问题。 更新操作 1、单条覆盖更新 1、覆盖式更新,由客户端完成所有数据的组装,…