异常处理设计

软件工程领域设计文档中的异常处理设计 本文聚焦软件工程设计文档中的异常处理模块,覆盖从异常分类、传播路径、处理策略到日志规范的全流程设计方法。无论是单体应用还是微服务架构,无论是前端交互还是后端服务,异常处理设计的核心逻辑都能在此找到通用解决方案。本文将通过“故事引入→核心概念→设计原则→实战案例→工具推荐”的逻辑展开,重点解决“设计文档中异常处理应该写什么”“怎么写才能让开发者‘看文档就能做’”两大问题。异常(Exception):程序运行中偏离预期的“意外事件”,例如网络超时、数据库连接失败(类比:快递送错地址的“意外”)。 阅读详情

异常处理设计


程序执行过程中,对于可以预测的不符合程序本身逻辑的操作,都可以归为异常。包括输入异常,执行异常,数据异常等。区分的方式复杂多样。

一般的处理异常方式有两种,一种是try-catch形式对异常进行捕捉及处理,一种是直接使用if语句捕捉。
异常的处理需要专门的设计。任何使用程序的人都不希望经常见到各种异常的抛出。未经设计的异常处理模式要么直接被忽略(pass),要么直接被抛出(raise)。这两种都是异常的处理操作,但是什么时候该忽略什么时候该抛出需要仔细的思考。

如同面向对象设计模式中,希望一切的操作都被封装,最后只提供几个非常简单的接口进行访问一样,对于异常的处理也应该是如此。对于每一个接口的操作,被深度封装后的内部逻辑将有一定的复杂度,难免会带有复杂的异常情况。而对于异常应该封装成几个用户需知的类型,告诉用户接口访问失败的原因即可。但是不需要告诉他具体是在执行哪一步的时候出现了错误。比如一个页面的资源可能分布在不同的服务器,加载一个页面需要访问多个服务器以拿到所有的资源。当某一个资源不可达的时候,只需要说明网络有问题,导致某个资源访问不到即可,不需要说明是哪一个服务器,不需要说明是访问超时或是资源不存在或是其他的原因。因为访问页面的用户并不关心这一些。同样的,对于删除文件操作,如果是删除一个不存在的文件,只需要正常返回即可,给予一个文件不存在的warning甚至只是info信息即可,不需要给一个error的信息。因为删除一个不存在的文件本身能得到的返回的结果是让文件不存在,即是说结果达到预期,不需要报错。

所以相应的也涉及到了一个日志分级的问题。info、debug、error三个级别对应的用户是不一样的,什么样的用户需要访问什么级别的日志,获取什么类型的异常需要分清楚。一个信息属于哪一级别也要经过思考。最简单的判断逻辑是,用户的输入经过该接口的处理,输出结果与用户的期望结果相差多大。
这在用户友好型的程序设计中非常关键。也是降低程序复杂度的一个关键。

Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。若有不正之处,请多多谅解和指正,不胜感激。以下是本文的目录大纲:一.什么是异常二.Java中如何处理异常三.深刻理解tr 立即下载

相关推荐

基于NXP1778的CAN自动波特率检测

一、概念 NXP1778芯片内部自带一个CAN控制器。CAN模块由两部分组成:控制器和验收滤波器。所有的寄存器和RAM都以32位字宽度来访问。 CAN自动波特率检测主要用于以一种CAN的转换的产品中。产品中CAN部分的波特率以前都是通过网页中修改然后配置下去的,依据实际情况的考虑,如果CAN部分的波特率能够根据客户设备的改变而自动改变,将会增加其灵活性。   二、原理 根据CAN控制器的

菜鸟的痕迹专栏 5271

如何设计好系统异常处理

相信任何一个开发人员都无法保证一开始程序就100%没有问题,更何况体量稍大的应用都会依赖一些第三方服务,或者我们常见的微服务也是,一旦我们的程序对外部有依赖就避免不了异常的发生,原因是外部依赖的服务不是我们的可控范围,这时候就必须处理异常,也就是通过异常处理将应用程序的故障降到最低。没有哪个程序100%没有漏洞的,只有一次次的积累不断的把程序优化的更好,尽可能的把错误率降低,以及把错误的影响范围降至最低,最终得以保证程序能够健壮的运行下去。// 同理关闭文件的时候也可能出现IO异常需要处理。

Huangjiazhen711的博客 1485

Unity多渠道APK打包:同一工程稳定输出不冲突安装包

Android应用多渠道分发是移动开发的基础场景,其核心在于解决包名唯一性、渠道可识别性与构建可重复性三大问题。原理上,Unity安卓打包本质是三阶段流程:生成Android工程、Gradle编译、APK签名,而包名冲突根源在生成阶段对PlayerSettings的强依赖。技术价值体现在规避人工配置失误、支撑CI/CD自动化、满足华为/小米等商店合规要求。典型应用场景包括应用宝、TapTap、B站等渠道独立包管理,以及AB测试、灰度发布等运营需求。本文聚焦Unity原生方案,通过BuildPlayerOpt

weixin_33736048的博客 794

java异常处理设计

通过以上的描述和举例,可以总结出一个结论,**RuntimeException 异常和受检异常之间的区别就是: 是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常 (RuntimeException)。不要同时记录和抛出异常,因为异常会打印多次,正确的处理方式要么抛出异常要么记录异常,如果抛出异常,不要原封不动的抛出,可以自定义异常抛出。尽可能晚的捕获异常,如非必要,建议所有的异常都不要在下层捕获,而应该由最上层捕获并统一处理这些异常。

qq_35693377的博客 977

eDP接口信号组成认识

eDP接口信号主要由Main Link、AUXCH与HPD三部分组成,如下图所示。 Main Link:表示主通道,用来传输各类型视频数据和音频数据; AUX CH:表示辅助通道,用于传输低带宽需求的数据,以及链路管理和设备控制信号; HPD:表示热插拔检测通道。 Main Link南1~4对数据线组成,每对数据线都是一对差分线。对于一款液晶屏而言,Main Link具体需几对数据线,这取决于屏幕的分辨率和彩色位数。 在该通道中传送的信号有视频像素信号、视频定时信号、视频格式信号、比特/像素及

精诚所至 2万+

30分钟搭建AI科研写作工作台:基于WorkBuddy的论文全流程加速实践

在人工智能技术日益普及的今天,如何利用智能工具提升专业领域工作效率成为关键课题。其核心原理在于通过模块化设计,将复杂的任务流程拆解为可复用、可编排的标准化技能单元,并结合精准的指令控制,实现从通用对话到深度任务执行的转变。这一技术价值在于显著降低重复性劳动强度,将人的创造力聚焦于核心决策与创新环节。在科研写作、数据分析、代码开发等场景中,这类智能工作台能有效辅助完成文献调研、内容生成、格式校验等繁琐步骤。本文以科研论文写作为具体应用场景,深入探讨如何利用WorkBuddy这一智能工作台,通过配置核心科研技能

weixin_29032489的博客 1486

架构设计内容分享(九十一):架构设计-异常处理

当服务方法传递一个异常给“你的方法”时,你要判断“你的方法”是否合适处理这个异常,如果不合适,传递给上层方法,如果合适,写一个异常处理器处理这个异常。而在程序中,异常就是程序在运行时期发生的问题,在理想的程序环境中,程序永远不会出现问题,用户的输入永远都是符合要求,逻辑没有任何问题,要打开的文件一定存在,类型转换一定是对的,内存一直是够用的.....总之没有任何问题,但是一旦出现这些描述的反面情况,如果不进行合理的处理,系统就不能正常运行,系统就无法提供正常的服务给用户。有可能是直接产生的,见图⑤处;

之乎者也·的博客 1051

K-means在关键词聚类中的尝试

K-means在文本聚类中的尝试 K-means算法是无监督的聚类算法。它的算法思想是:先随机选取K个对象作为初始的聚类中心。然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。一旦全部对象都被分配了,每个聚类的聚类中心会根据聚类中现有的对象被重新计算。 K-means算法的关键点在于: 初始k个聚类中心的选择 距离的计...

BigPig_LittleTail的博客 5573

Java异常处理终结篇——如何进行Java异常处理设计

使用Java异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在Java程序中,如何进行异常设计。

登高而望远 1万+

【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning

ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。

向上生长的程序媛的博客 1335

【matlab】基于 Simulink 的空调恒温控制系统仿真建模

本文介绍了基于Simulink的空调恒温控制系统仿真建模方法。系统采用PID控制算法,通过传感器测量温度、控制器计算信号、执行器调节功率来实现恒温控制。文章详细阐述了Simulink模型搭建步骤,包括PID控制器、房间热力学特性模拟等模块的实现,并提供了测试流程和多种实际部署场景。该方法可有效验证控制算法性能,优化系统设计,适用于家用、商用、工业及汽车空调系统。未来可结合智能算法和节能优化技术进一步提升系统性能。

走向CTO的路上... 919

设计一个高效合理的异常处理框架

 设计一个高效合理的异常处理框架    对于一个应用系统来说,发生所有异常在用户看来都是应用系统内部的异常。因此应该设计一套应用系统的异常框架,以处理系统运行过程中的所有异常。    基于这种观点,可以设计一个应用系统的异常比如叫做AppException。并且对用户来说,这些异常都是运行应用系统运行时发生的,因此AppException应该继承RuntimeException,这样系统中

dada360778512的专栏 2702

蓝鸟四轴飞控系统C程序V3.0(基础版本)深度解读

2. 解析遥控通道数据(油门 / 横滚 / 俯仰 / 偏航),转换为标准化值(-1000~+1000);3. 封装PID初始化(PID_Init,配置KP/KI/KD、输出限幅、积分限幅);,包含姿态角(Attitude_Data.Roll/Pitch/Yaw)、角速度(Gyro_Data.X/Y/Z)、遥控值(RC_Data[0~5])、电池电压(Bat_Volt)、电机PWM值(Motor_PWM[0~3])、系统状态(Sys_State),校验和通过Check_Sum()函数计算;

搏博的专栏 343

java异常处理设计_Java异常处理和设计

Java异常处理和设计在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然...

weixin_35645652的博客 230

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

IC设计高级007:异常处理设计三要素

1、什么是异常处理设计 为了保证芯片在非预期的情况下能够继续运行,需要针对异常进行个性化设计。常见的异常有交互的一方没有响应(比如读数据没有返回),模块输入的数据格式不满足要求。 2、异常设计核心三要素 针对异常情况,芯片设计具有三要素: 1)不挂死 异常情况发生时,芯片不能挂死。比如,状态机不能卡住,数据通路能够正常收发数据。 2)能恢复 出现状况时,电路状态能够及时恢复到正常状态,不阻塞后续的数据处理。比如状态机能够在几十微秒以内恢复到IDLE状态,不能卡住几秒钟,比如数据通路接收到不合法

IC小鸽的博客 1632

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【Java】J2EE异常处理设计整理

1. 业务异常介绍 我们在处理应用中的异常时,通常可以将应用中所遇到的异常分为两大类,一种是业务异常,一种是非业务异常。 业务异常是指在进行正常的业务处理时,由于某些业务的特殊需求而导致处理不能继续执行所抛出的异常,这种异常是由开发人员所定义的,它属于可以预知的异常。 非业务异常是指在正常情况下所产生的异常。例如,由于网络故障而导致无法访问数据库,必要的配置文件不存在等情况下所产生的异常都属于非...

黑白猿的琐碎日常 2万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: serverless应用
下一篇: 【转】降低软件复杂性的一般原则和方法
浆糊串磕楠
博客等级 码龄10年 4粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值