关于异常的处理一些问题之我见

C++异常处理 基于著名书籍和自我学习得出的C++异常处理 阅读详情

1.异常处理的好处在绝大多数的情况下都是大于坏处,请尽量使用异常处理.

2.如果要针对单独一种异常进行了try...catch处理后,最好外面再要外包一层try...catch去捕捉未知的异常(或者用一个try,多个catch,而最后一个catch就是用来catch未知异常),因为你永远都不不能保证你的程序在哪里抛出何种异常,正如引用文章那个中所说的OutOfMemoryExcetpion等异常是很常见的,想象一下有过万行的数据转化成Excel报告这样的情景,抛出这个异常就不足为奇了,因为我就遇到过.^_^

3.try...catch要包装尽量少的代码吗? 显然,没有发生异常的时候,基本是没有什么性能损失的,决定要不要这样做,其实得看情景的,例如一个很简单可能发生除零错误的代码块,就可以很明确的只try...catch这一段,让人更明确这里到底会出什么问题,同时告诉人家你已经对预计中的问题都做了处理了.但这种完美的情况基本上都是不存在的,所以说尽量try更多的代码,catch更多的异常显得更重要,因为一些已经知道的异常,为什么还要你try呢?何不自己就静悄悄的处理掉呢?是吧 ^_^

4.底层的框架类库尽量少用try...catch吗? 底层的框架类库通常比较通用,性能的要求也比较高,所以只在总接口中使用try...catch?这也许是很多人的一些误解,他们或者会认为有了总接口中做了异常捕捉就可以万事大吉,因为异常是会一层一层网上抛出来的,所以有异常可定能捕捉到.但实际中如果这样操作会出现很多问题.因为这样很不利于程序的排错,特别是在一些时间比较紧要求并行开发(类库和业务代码同时进行开发)的项目中,到了代码会师那一刻,代码有bug,排错就很困难,因为catch到已经是穿过几个时空后的原始人,都不知道他是来自那个世纪的^_^,所以其实底层更需要try...catch.

5.catch中不要包含业务逻辑! 有些朋友喜欢在异常处理模块中把业务包含进去,但这样其实有很大的隐患的. 我曾经看到过这样的一个例子,有个业务逻辑是要判断用户是否设置了某个时间,然后用这个时间进行其他处理,这里那位哥们使用一个省劲的方法,就是先把取出来的值做时间转换,能转就是有定义,不能转抛出异常就判断用户没有定义这个时间,这样做初初看上去好像问题也不大,但是日后如果客户要投下业务变动的原子弹,后果是如何,大家想像一下就知道,这里引用句经典话,"谁用谁知道啊" ^_^

6.尽量"throw;",不要"throw e;". 这两者有什么区别呢,如果使用"throw e;"只是单纯把捕捉到的异常抛出来,其实还有一些存在与堆栈中的信息没有被抛出来,所以throw出来的东西是经过过滤的,如果大家是要向上一层进行throw,就要来得彻底点,不然又可能会给排错加上一层不该有的迷雾的哦 ^_^

7.catch中如果要写log,请把当前StackTrace也要拉进来. 因为把StackTrace记录下来,可以获取一些对排除异常很有帮助的信息,例如引发这个异常的调用的事件和函数列表等,想象一个经过多次throw才catch的异常,有这个瓜藤,就不怕摸不着瓜啦,是吧 o(∩_∩)o

参考文章:关于.NET的异常处理的几个误区

SpringMVC局部异常处理和全局异常处理  一、简介 在Web项目开发中,不管是对底层数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。那么,能不能将所有类型的异常处理从各种处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护? 项目全局的异常统一处理未知。... 阅读详情

相关推荐

东方财富网股票API逆向分析:手把手教你破解动态参数(2024最新版)

本文详细解析了2024年东方财富网股票API的动态参数生成机制,包括回调函数、身份验证和时效控制参数的逆向工程方法。通过实战代码演示,帮助开发者破解动态参数,实现高效稳定的股票数据爬取,适用于金融数据分析和量化交易场景。

weixin_29091105的博客 1026

[用友]报表格式异常的处理

突然发现系统库存管理的出入库流水帐异常,表体和表头错位了.  平时第一招 恢复默认, 很可惜,恢复的默认设置都是错位的.  问题有点麻烦,不过还好,考虑到可以恢复,这些信息一定是保存在数据库里面的,于是用 事件跟踪了几个数据库,果然如此.--通常都添加事务 以免出错 没的救   2457 通过Rpt_GlbDEF 查的.begin transaction;Delete From Rpt_F

GlGh的日子 1766

CAD图纸智能搜索三大突破:图纸秒搜技术、相似度匹配与AI语义搜索

CAD图纸作为核心资产,长期面临管理难题:传统全文检索需逐张打开图纸人工查找,效率低下;相似图纸匹配依赖人工比对,误差率高;非专业人员难以通过模糊描述精准定位图纸。针对这些问题,唯杰地图推出三项智能解决方案:一是基于现代化索引引擎的​​全文搜索​​,支持秒级检索图纸内的文字、图层、块名称等,并可多条件组合查询;二是​​相似度搜索​​,通过SIFT算法和深度学习提取几何特征与拓扑结构,实现高精度匹配;三是​​AI语义搜索​​,利用大模型解析自然语言指令(如“查找半径为10的红色圆”),直接定位目标图形。

vjmap的博客 1868

高速公路ETC卡签之我见8-OBU发行

本部分主要介绍OBU的发行过程、从厂商最终安装到用户车辆经过了哪些环节,各个环节分别对OBU做了哪些操作。本文中关于业务环节的划分、操作的先后顺序等并无统一的规范与标准(OBU一发流程除外,该流程部里面有给出相应的说明),本人根据部分省份的业务实现整理归纳而来,纯属个人拙见,欢迎大家讨论。

上善若水的博客 1万+

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

大模型-CLIP 详细介绍

最先进的计算机视觉系统通常被训练来预测一组预定义的对象类别。这种受限的监督形式限制了它们的通用性和可用性,因为要指定任何其他视觉概念,就需要额外的标注数据。比如,它们可以识别“猫”、“狗”、“汽车”等。但是,这种做法有一个明显的局限性:如果你想让系统识别一个新的类别,比如说“独角兽”,你就必须提供大量带有“独角兽”标签的图片来训练系统。这不仅耗时费力,而且限制了系统的灵活性和广泛适用性。直接从原始文本中学习关于图像的信息是一种很有前途的替代方案,因为它利用了更广泛的监督来源。

晓的博客 9718

异常处理

inp = input('请输入内容') try: num = int(inp) print(num) except Exception as e: print('错啦') 转载于:https://www.cnblogs.com/koushuige/p/7886039.html

weixin_34376986的博客 115

支付宝H5支付唤醒协议全解析:从alipays://到动态orderSuffix的抓取与拼接

本文深入解析支付宝H5支付唤醒协议,从alipays://协议设计到动态orderSuffix参数的抓取与拼接,详细介绍了支付宝H5支付的底层机制。内容包括协议架构剖析、动态令牌生成与捕获、浏览器兼容性解决方案以及安全机制设计,为开发者提供全面的技术指南和实践建议。

weixin_27972919的博客 3495

高速公路ETC卡签之我见1-概述

简单介绍高速公路ETC卡签涉及的基本概念,如密钥、IC卡等;接着介绍ETC系统中的关键设备,用户卡、电子标签等;最后说明卡签的主要使用场景。

上善若水的博客 8568

辉芒微教程第七篇《PWM与PWM3调节LED灯的亮度》

这个其实就是PR3L = 128设置的,由于我们刚刚寄存器设置了8位模式,其设置的范围就是0-255,而128/255≈50%左右,因此PR3L就是我们的占空比调节的寄存器,我们可以通过它来调节占空比,大家可以试试它占空比设置10%,30%,60%来看看它的不同效果,灯的亮度是肯定不一样的,如果有条件的朋友,可以购买一款逻辑分析仪去看他的占空比。平平无期的这个东西有什么东东用,貌似是没什么用,只是一个概念而已,是不是不同设备可以设置1秒,3秒,10秒的周期就行?但是它占空比为什么是50%,怎么得来的?

qq_41809823的博客 826

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

宁波阿成的博客 659

java异常分类,异常处理,面试中常见异常问题!

什么是异常? 程序运行过程中产生的不正常的情况统称为异常! Throwable 类是 Java 语言中所有错误或异常的超类。提供了错误堆栈实现等一系列方法。 有两个直接子类:Error & Exception 程序错误一般分为三种: 1.编译错误;2.运行时错误;3.逻辑错误。 (1)编译错误是因为程序没有遵循语法规则,编译程序能够自己发现并且提示我们错误的原因和位置,这个也是我们在刚接触...

Java开发,人工智能,边缘计算,致力于掌握前沿技术 7859

XCP实战系列介绍09-基于Vehicle Spy进行XCP测量步骤详解

详细介绍如何使用Vehicle Spy进行XCP测量

initiallizer的博客 1392

关于异常以及如何统一处理异常

前言: 最近公司新来的实习生,在写代码时,代码中出现代码中就会出现大量的try {…} catch {…} finally {…} 代码块,这种情况会产生大量的冗余代码,而且还影响代码的可读性。所以就异常处理这一块说收统一处理。 一 .首先谈谈异常 1.异常定义: 阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种意义上的错误,就是问题,它可能会导致程序失败。之所以java要提出异常处理机制,就是要告诉开发人员,你的程

damokelisijian866的博客 1917

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

multiprocessing Pool的异常处理问题

multiprocessing.Pool开发多进程程序时,在某个子进程执行函数使用了mysql-python连接数据库, 由于程序设计问题,没有捕获到所有异常,导致某个异常错误直接抛到Pool中,导致整个Pool挂了,其异常错误如下所示: Exception in thread Thread-3: Traceback (most recent call last): File "/usr/

我的玩具熊呢 2万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python中如何处理异常?Python异常的处理

除了Python自带的异常外,开发者为了方便还可以自定义异常类。但是不论是以直接还是间接的方式,异常都应从 Exception 类派生。异常类可以被定义成能做其他类所能做的任何事,但通常应当保持简单,它往往只提供一些属性,允许相应的异常处理程序提取有关错误的信息。大多数异常命名都以 “Error” 结尾,类似标准异常的命名。许多标准模块都需要自定义异常,以报告由其定义的函数中出现的错误。自定义异常类testcatch。

知智 7440

异常处理及常见异常问题

异常处理及常见异常问题1. 异常JavaException:1、Error2、RuntimeException运行时异常3、Exception4、throw用户自定义异常异常类分两大类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_Runtime...

唯风的博客 2285

Java:异常及相关内容和通过异常处理问题

文章目录声明概念基本异常运行时异常异常参数throw关键字Exception 类的层次捕获异常try块catch关键字finnal关键字异常处理程序的执行图异常继承异常方法throws关键字 声明 1)该文章部分内容整理自网上的资料,如不小心侵犯了大家的权益,还望海涵,并联系博主删除。 2)博主是萌新上路,文中如有不当之处,请各位大佬指出,共同进步,谢谢。 概念 在《Java编程思想》P248页有这样一段话: “ 异常 ”这个词有 “ 我对此感到意外 ”的意思。问题出现了,你也许不清楚该如何处理,但你的确知

sid10t. 2万+

java哪些异常是必须处理的_程序员处理java异常需要注意哪些问题

java异常是程序员在编程开发项目工作中会遇到的一些问题,而今天我们就通过案例分析来了解一下,程序员在处理java异常的时候需要注意哪些问题。一、异常概述(一)、概述Java异常是Java提供的一种识别及响应错误的一致性机制。异常指的是程序在执行过程中,出现的非正常的情况,终会导致JVM的非正常停止。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性...

weixin_42496225的博客 2323

异常处理-异常处理的问题分析

1-异常处理-异常处理的问题分析 参考文档: https://blog.csdn.net/kinginblue/article/details/70186586 自定义异常: 1: 10001 非法参数 10002 参数缺失 2: 2001 数据库异常 2003 网络异常 从添加页面的service方法中找问题: //添加页面 public CmsPageResult add(CmsPage ...

待定 805

开发中的异常处理问题

应用程序避免不了出异常,捕获和处理异常是一个精细活。在开发业务逻辑时不考虑任何异常处理,项目接近完成时再采用“流水线”的方式进行异常处理,也就是统一为所有方法打上 try…catch…捕获所有异常记录日 志,或者使用 AOP 来进行类似的“统一异常处理”。 其实,这种处理异常的方式非常不可取。 下面来说下不可取的原因、与异常处理相关的坑和异常处理的最佳实践。 一、捕获和处理异常容易犯的错 1. 常见错误 1.1 不在业务代码层面考虑异常处理,仅在框架层面粗犷捕获和处理异常 这个也就是常说的“统一异常处理”,

qq_44503377的博客 1199

@ControllerAdvice全局异常处理器无法捕获异常,问题解决

@ControllerAdvice全局异常处理器不生效,解决方案 这是因为这个类没有交给IOC容器管理!---- 根本就没有扫描到这个包 testException这个类是全局异常处理类,需要需要交给ioc容器管理,故需要确保能扫描到这个类! springmvc.xml配置文件中扫描的包是package=“com.test.controller”,而testException在com.test.exception包下,无法扫描到这个类,所以该全局异常处理类未生效 解决方案: 将该类移到controlle

哔哔小鸡 7883

如何优雅处理异常?处理异常的原则

在我们日常工作中,经常会遇到一些异常,比如:NullPointerException、NumberFormatException、ClassCastException等等。那么问题来了,我们该如何处理异常,让代码变得更优雅呢?如果标准异常无法满足我们的业务需求,我们可以自定义异常。/*** 业务异常* @author 苏三* @date 2024/1/9 下午1:12*/@Data/*** 异常码*//*** 具体异常信息*/super();

weixin_51582215的博客 1041

异常处理,简单而又复杂的问题

<br />异常处理,简单而又复杂的问题<br />一个好的软件系统,必定从整体上有一个好的异常处理机制;一个好的程序员必定对异常有着充分的理解和认识——异常处理,简单而又复杂的问题。<br />1为什么需要异常?<br />应用程序必须处理独立于程序本身的特殊情况,如:<br />A,  访问不存在的文件<br />B,请求内存时遇到可用内存不足<br />C,  访问某一资源时没有足够权限<br />D,  用户获取了非法数据(如年份为5000)<br />如果不处理这些“错误”情况,它们将终止程序的执

lubiaopan的专栏 2637

什么是异常处理以及异常处理的方式

错误分为两种,一种为语法错误,一种为逻辑错误 异常就是程序运行错误时发出的型号,或者说是程序运行崩溃的结果 常用异常: AttributeError试图访问一个对象没有的属性,比如调用Foo.x,但是Foo下没有x属性 IOError输入/输出异常,基本上是无法打开文件的 ImportError无法引入模块或包,基本上是路径问题或者名称错误 IndentationError语法错误的子类,代码没有...

我一定要成为测试开发! 4918
上一篇: 关于.NET的异常处理的几个误区
下一篇: 失去你之后
linqingfeng
博客等级 码龄21年 69粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值