java基础巩固训练营【第一轮】(十一) 直面错误--java异常

2021.10.30 孤尽训练营D5——异常处理与日志 开发过程中常常会有已处理或无法处理的异常,若我们没有一个明确的处理逻辑和提示信息,在出现异常的时候就很难定位到具体的出错点。 大纲:Java异常体系、异常处理、日志规约、错误码规约、异常与日志综合实践 日志不规范,排查两行泪 异常应当描述导致当前异常发生的原因 根据异常栈快速定位到异常发生的位置 结合异常描述和异常栈解决异常 throwable时所有异常和error的最高父类,需要谨慎使用 java异常体系 非受检异常(RuntimeException,unchecked异常):在个人可. 阅读详情

本章的测试代码存放在 com.j2ee110.csdn.leader.exception包路径下面

大家的练习代码存放在 com.j2ee110.csdn.leader.姓名标识.exception包路径下面 

 

什么是java异常

 

很多和java同级别的语言比如c#都有异常体系,很多以前没有异常功能的语言比如php,在其后续版本中也加入了异常,因此异常应该是一门现代编程语言必备的功能

 

其实在这些编程语言中异常是用来进行错误提示的,而且是对运行时候的错误进行提示的。在程序运行时候可能会遇到一些错误,这些错误可以通过程序处理,从而避免程序被打断。

 

说句实话,我其实不敢发表关于java异常相关的看法,因为关于java异常网上的争论实在是太多了,就连BRUCE ECKEL(THINKING IN JAVA 的作者)这样的大牛也加入进来讨论这个问题,我如果发表点看法,可能会被网上的“砖家”们骂死,但是既然我们本次训练营是关于java系统的学习,而java异常又那么重要,那么我还是和大家一起分享一下我对java异常的一些看法,这些看法是我在工作中经常要用到的。 

 

异常的类别

java中的异常分为“检查异常”和“非检查异常”, 下面我来分类分析

 

“检查异常” 学名 Checked Exception 定义:扩展了java.lang.Exception的异常称为checked exceptions, 编译器要求这些异常必须被捕获或者重新抛出

 

“非检查异常” Unchecked Exception 定义:扩展了java.lang.RuntimeException的异常称为unchecked exceptions, 它们不是必须捕获的.

 

关于Checked 和 Unchecked 我就讲这么多吧,网上有很多讨论,都是关于如何用的,我这里不像下一个到底谁好的定义,但是我只想跟大家一起讨论一下在项目中如何用

 

 

异常的应用场景

 我觉得java异常在具体的应用中通常会有这两方面:1、熟悉JDK提供的异常,在遇到这些异常的时候要能认出他们

2、需要在应用程序中定义自己的异常。

 

 

自定义异常

在自定义的异常中我要讨论来两个问题,第一是如何定义异常,的第二是,如何抛出异常

 

 com.j2ee110.csdn.leader.exception.CheckedException 定义了一个检查类型的异常

 

 com.j2ee110.csdn.leader.exception.UncheckedException 定义了一个非检查型的异常

 

 

com.j2ee110.csdn.leader.exception.ExceptionThrowAuthor 定义了两个方法,这个两个方法分别抛出检查异常和非检查异常

 

异常的捕获和处理

 

com.j2ee110.csdn.leader.exception.ExceptionMain 演示如何捕获并处理异常

关于java异常最基本的就到暂时这些吧,其实异常一个比较重要的应用是异常链,但是异常链通常结合具体的项目来说明效果更好,所以我在第二轮或者第三轮在跟大家分享吧。

课后练习

今天的课后练习很简单,大家为自己创建一个检查型异常和一个非检查型异常,注意这个两个异常我在后面肯定是要用到的。

 

 

 

 

暑期java基础巩固训练营开始
java基础巩固训练营 简介
java基础巩固训练营【第一轮】(一)项目环境和规范
java基础巩固训练营【第一轮】(二)JAVA基础
java基础巩固训练营【第一轮】(三) 编写、编译、运行 
java基础巩固训练营【第一轮】(四) 利器(IDE工具)
java基础巩固训练营【第一轮】(五) 基本数据类型
java基础巩固训练营【第一轮】(六) 面向对象的JAVA
java基础巩固训练营【第一轮】(七) 数据结构中的java
java基础巩固训练营【第一轮】(八) 文件读写
java基础巩固训练营【第一轮】(九) 用java通信
java基础巩固训练营【第一轮】(十) 多线程
java基础巩固训练营【第一轮】(十一) 直面错误--java异常
java基础巩固训练营【第一轮】(十二) 我们一起来找茬
ava基础巩固训练营【第一轮】(十三) java桌面应用
java基础巩固训练营【第一轮】(十四) 大家一起做项目

 

 如果您对我的文章感兴趣的话,请点击这里加我为好友,让我们一起进步
 

http://student.youkuaiyun.com/invite.php?u=106708&c=2383a3846076c876

 

 

 

华为软件开发训练营课程资料大全 优秀代码是指能够高效、清晰、可维护地完成既定功能的代码。它通常是简洁的,没有多余的复杂性,易于其他开发者理解和使用。定义优秀代码需要考虑以下几个标准:可读性(Readability):代码应该易于理解,包括命名规范、适当的注释和清晰的逻辑。可维护性(Maintainability):优秀的代码应便于维护和扩展,意味着代码结构良好,逻辑清晰。可重用性(Reusability):优秀代码应该支持模块化,方便代码的复用。性能(Performance) 阅读详情

相关推荐

【实战解析】RTL8306MB交换芯片驱动开发中的RMII接口调试陷阱

本文深入剖析了RTL8306MB交换芯片驱动开发中RMII接口的典型调试陷阱。通过一个工业网关项目的实战案例,揭示了因硬件原理图设计疏忽导致TX_EN与CRS_DV信号线错接,从而引发网络“哑火”的根本原因。文章详细展示了使用示波器从时钟、数据到控制信号的系统性排查方法,并总结了关键的设计警示与自查清单,为嵌入式网络开发中的软硬件协同调试提供了宝贵经验。

qqq44的博客 1028

pytorch 训练出现异常处理

if loss > 100 or np.isnan(loss): # 如果损失(out与标签计算) > 100 或者 loss为nan,出现异常,退出。防止方式意外 log('Loss exploded to {:.5f} at step {}'.format(loss, step)) raise Exception('Loss exploded') ...

luolinll1212的专栏 1000

5V转±12V无变压器双boost电路

最近有个新项目,需要±10V范围的模拟量输出(非隔离),对于5V以下供电的控制板而言单端输出绝对没问题,可现在需要有正负输出,是少不了正负电源的,因此准备设计一个5V转±12V的电源,然后选择一个双向供电的运放,来实现单端模拟量信号向双向模拟量信号转换。 本文就来分享一下5V转±12V电源的设计。对于有类似双向电源需求的场合,大多使用变压器通过增加多个绕组来实现,而对于体积空间有要求的场合来讲,变压器实在是太大了,另外对于一些成熟的项目,变压器如果是已经设计好的,再额外增加绕组需要重新设计,费时费力。于是,

qq_30388337的博客 1万+

抛出异常的三种形式

抛出异常有三种形式:①系统自动抛出 ②throws ③throw 有的同学可能不知道该怎么去用。或者经常用到 throws 看到 throw 有点不确定。下面我们一起看一下。 ①系统自动抛出 :当程序出现一些逻辑错误、转换错误时,系统会自动抛出异常。 例如: 看系统抛出异常: 当然这只是其中的一种。除数为0还会抛出ArithmeticExcepti...

m0_37828937的博客 3万+

避坑指南:在Linux服务器上用Conda安装antiSMASH 5.2.0(解决Jinja2报错和Matplotlib权限问题)

本文详细介绍了在Linux服务器上使用Conda安装antiSMASH 5.2.0的避坑指南,重点解决了Jinja2报错和Matplotlib权限问题。通过创建专用conda环境、安装指定版本依赖包和配置缓存目录,帮助用户顺利完成antiSMASH的本地部署,适用于批量处理基因组分析任务。

weixin_26911099的博客 315

在mac OS下安装SQL Developer

最近一直在折腾Oracle数据库,但由于电脑是mac系统,plsql developer用不了,远程管理一直不是很方便。后来听说Navicat不错,就也装了个试试看,发现界面看起来确实不错。今天心血来潮,想试试oracle自己开发的client。用惯plsql developer的人也可以来试试看,毕竟是自己人开发的,兼容性应该会不错吧。下面就把安装过程分享给新手或者需要帮助的朋友。 1.

bonbonboo的专栏 2万+

java基础巩固训练营【第一轮】(十三) java桌面应用

当人走的太快的时候就要停下来,让灵魂能够跟上。 2361

保姆级教程:在RK3588开发板上用CMake交叉编译ZLMediaKit(附完整toolchain配置)

本文提供了一份详细的RK3588开发板上使用CMake交叉编译ZLMediaKit的教程,包括完整的toolchain配置和实战避坑指南。从环境准备、工具链配置到依赖处理、编译部署,手把手指导开发者完成ARM64架构的流媒体服务搭建,特别适合嵌入式开发新手。

weixin_28681255的博客 383

java基础巩固训练营【第一轮】(十二) 我们一起来找茬

当人走的太快的时候就要停下来,让灵魂能够跟上。 1948

第1章:认识OpenClaw

OpenClaw是一个开源的 AI 智能体 Gateway 网关项目名称演变:OpenClaw 原名 Clawdbot,因 Anthropic 商标顾虑在 2026年1月27日更名为 Moltbot(过渡名),最终在1月30日确定为 OpenClaw。三个名字本质是同一个项目,功能完全一致。🏠在你的电脑上运行:完全本地部署,数据隐私有保障📁访问本地文件:可以搜索、读取、编辑你电脑上的文件🔌扩展能力:通过Skills(技能)系统无限扩展功能💬多平台使用。

Maynor的博客 2834

流程图详解Transformer最核心的多头注意力机制,QKV流向清晰明了

本文详细讲解了Transformer模型中的多头注意力机制(Multi-head Attention)。通过类比多人评估同一事物的不同视角,说明多头机制能综合多个注意力权重获得更有效的输出。文章逐步推导了多头注意力的计算过程:将输入矩阵X(4×512维)分别与8组Q、K、V权重矩阵相乘,得到8组head(每组4×64维),拼接后经Wo矩阵变换恢复为4×512维输出。整个过程涉及37个待训练参数矩阵(1个Wo、8组Wq/Wk/Wv)。该机制通过并行计算多个注意力头,能更全面捕捉输入特征间的复杂关系。

人工智能研究所的博客 257

java基础巩固训练营【第一轮】(一)项目环境和规范

当人走的太快的时候就要停下来,让灵魂能够跟上。 3480

HDR 人像肤色稳定实战:AE/AWB/ToneMap 冲突解耦与优先级裁决

人像 HDR 最容易“翻车”的就是**肤色飘**:AE 抢亮度、AWB 拉白点、TM 又在肩部压高光,三方各自“对”却合起来“错”。本文给出一套**工程可落地**的裁决策略:以**肤色 ROI 锚点**为最高约束,AE 先对脸部入射照度收敛,AWB 在**肤色先验 + 光源模型**下缓变,TM 采用**色相保持 + 中灰/肤色双锚**且时域一致化。配套**阈值与回归**(ΔE00、亮度漂移 RMS、频闪注入),把“主观对”的口径落到**可度量**,并给出逆光、多脸、霓虹等极端场景的**例外分流**。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1200

java基础巩固训练营【第一轮】(十四) 大家一起做项目

当人走的太快的时候就要停下来,让灵魂能够跟上。 3244

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java基础巩固训练营【第一轮】(九) 用java通信

当人走的太快的时候就要停下来,让灵魂能够跟上。 1578

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java基础巩固训练营【第一轮】(十) 多线程

当人走的太快的时候就要停下来,让灵魂能够跟上。 1728

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

暑期java基础巩固训练营正式发布

当人走的太快的时候就要停下来,让灵魂能够跟上。 2887

Java异常处理训练营

什么是异常呢,在Java中,异常是代表程序代码在编译或者执行的过程中可能出现的错误。异常可以分为两种,一种是编译时异常,另一种是运行时异常。下面对这两种异常详细进行介绍。

weixin_49785524的博客 870

Java小题精炼训练营(篇十一)

1、对接口的描述正确的是() 一个类可以实现多个接口 接口可以有非静态的成员变量 在jdk8之前,接口可以实现方法 实现接口的任何类,都需要实现接口的方法接口 1.接口中声明的成员默认为static final成员(不管是基础数据类型还是引用类型),且必须初始化; 2.接口中声明的方法默认为public且不能有实现体,即{},方法体可有参数; 3.实现接口的类,必须实现接口中所有方法,且不能降低方法的运用域,即必须显示声明为public 4,抽象类不需要实现接口的方法。抽象类也可以实现接口,但是可

耀的博客 1234

王道训练营 Java 部分测试

王道训练营 Java 部分测试 第一部分 选择题 (20*2 共 40 分) 下列说法正确的是() A.Java 程序经编译后会产生 machine code B.Java 程序经编译后会产生 byte code C.Java 程序经编译后会产生 DLL D.以上都不正确 设 x = 1 , y = 2 , z = 3,则表达式 y+=z--/++x 的值是( )。 A. 3 B. 3. 5 C. 4 D. 5 0.6332 的数据类型是() A float B double C Float D Dou

weixin_光光的博客 2183

Java小题精炼训练营(篇九)

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了《Java中高级核心知识全面解析》了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB的,并且默认即为public abstract类型。5. 抽象类中可以包含静态方法,接口中不能包含静态方法。

2401_86022611的博客 452

Java小题精炼训练营(篇十八)

1、关于类的叙述正确的是()。 在类中定义的变量称为类的成员变量,在别的类中可以直接使用 局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中 使用别的类的方法仅仅需要引用方法的名字即可 只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数 A在类中定义的变量称为类的成员变量,在别的类中不可以直接使用局部变量的 C使用别的类的方法需要通过该类的对象引用方法的名字 D只要没有定义任何构造函数,JVM都会为类生成一个默认构造函数 B 2、以下类定义中的错

耀的博客 2488

01_03_java异常机制和File类

异常机制和File类 异常机制(重点) 基本概念 异常就是"不正常"的含义,在Java语言中主要指程序执行中发生的不正常情况。 java.lang.Throwable类是Java语言中错误(Error)和异常(Exception)的超类。 其中Error类主要用于描述Java虚拟机无法解决的严重错误,通常无法编码解决,如:JVM挂掉了等。 其中Exception类主要用于描述因编程错误或偶然外在因素导致的轻微错误,通常可以编码解决,如:0作为除数等。 异常的分类 java.lang.Exception

weixin_41596178的博客 270

T31训练营-DAY5-异常处理与日志

一、JAVA异常体系 (1)异常处理流程图 (2)异常处理机制 (3)异常处理体系 二、异常处理 (1)异常处理原则 非必要使用异常 使用描述性消息抛出异常 力所能及的异常一定要处理 异常的忽略需要有理有据 (2)异常处理的一些特殊情况 1. try....catch....finally流程解析 2. try with resource 执行流程 3.级联调用时易产生 NPE 连...

zack_hj的博客 361

catch里面抛出异常_java常见面试题及答案(异常)

[如您对本文感兴趣,请点击标题下方蓝色“拓达IT训练营”添加关注,每天都有精彩实用文章呈现给您]异常1. throw 和 throws 的区别?throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。2. final、finally、finalize 有什么区别?f...

weixin_33600376的博客 3575
上一篇: java基础巩固训练营【第一轮】(十) 多线程 补充
下一篇: java基础巩固训练营【第一轮】(十一) 直面错误--java异常
模事在人
博客等级 码龄17年 1546粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值