首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么最好不捕获通用类中的异常?

在软件开发中,通用类指的是那些被多个模块或组件共享的类。通常情况下,我们不建议在通用类中捕获异常,原因如下:

  1. 职责分离:通用类应该专注于实现特定的功能,而不应该处理异常。将异常处理逻辑放在通用类中会导致职责混淆,使代码难以维护和理解。
  2. 可重用性:通用类的目标是提供可重用的代码,以便在不同的上下文中使用。如果在通用类中捕获异常,那么它将与特定的上下文紧密耦合,限制了其可重用性。
  3. 异常传递:通用类中的异常捕获可能会掩盖底层问题,并且不会提供足够的上下文信息来进行故障排除。相反,应该将异常传递给调用者,由调用者负责处理异常或将其传递给更高层次的组件。
  4. 代码清晰度:通用类应该保持简洁和清晰,以便其他开发人员能够轻松理解和使用。将异常处理逻辑放在通用类中会增加代码的复杂性,使其难以理解和维护。

总结起来,通用类应该专注于实现特定的功能,而将异常处理逻辑留给调用者或更高层次的组件处理。这样可以提高代码的可维护性、可重用性和可读性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python异常捕获

无论是编程新手还是老手,都会遇到过程序报错,终止执行情况,对于python报错信息,可以分为以下两大类 语法错误,syntax error 异常, exception 两报错信息示意如下 #...此时才意识到代码存在bug, 这也是为什么软件开发不能一步到位,而是不断迭代升级原因,只有当代码处理项目足够多,范围足够广,才能够发现现有代码不足,从而做出改进。...对于代码可能异常进行处理,可以增加程序健壮性。在python,通过try..except语句进行异常捕获,基本用法如下 >>> def calc(a, b): ......代码块 用except捕获对应异常,except语句可以有多条,对应多个不同类型异常,当try某条语句跑出异常之后,程序就会根据异常类型,执行对应except语句 记住所有的异常类型基本是不可能...,在实际开发,往往是根据经验,先设定几个可能异常类型,当遇到超出范围异常时,在修改代码,捕获对应异常

1.9K30

【C++】异常处理 ⑦ ( 异常继承层次结构 | 抛出 捕获 多个类型异常对象 | 抛出子类异常对象 捕获并处理 父异常对象 )

自定义 异常 , 可能存在 继承结构 , 也就是说 在 同一个 try-catch 代码块 , 如果需要 拦截 和 处理多个 异常时 , 如果 这些异常都继承相同 , 只需要拦截一个 父异常即可..., 本篇博客 , 讨论 抛出 / 捕获 异常 存在 继承结构 情况 ; 一、抛出 / 捕获 多个类型异常对象 1、抛出 / 捕获 多个类型异常对象 定义一个函数 , 传入一个 int 类型参数...4 个 自定义异常 ; class eNegative {}; class eZero {}; class eTooBig {}; class eTooSmall {}; 然后 , 在函数 , 根据不同判断...二、异常继承层次结构 1、抛出子类异常对象 / 捕获并处理 父异常对象 如果 抛出 / 捕获 多个类型异常对象 , 每次拦截处理异常时 , 都要手动编写多个 catch 分支 , 不利于代码维护...; 如果将 相似类型异常 都继承自 一个父 , 那么每次拦截时 , 只需要拦截一个父异常即可 ; 定义父异常 , 其中定义一个纯虚函数 , 该纯虚函数是异常打印 , 或者异常处理通用操作 ;

14910

Java异常Exception和捕获,自定义异常

如果异常没有在调用者方法处理,它继续被抛给这个调用方法上层方法。这个过程将一直继续下去,直到异常被处理。这一过程称为捕获(catch)异常。...如果在程序运行时,try块代码发生了异常,但是所有catch分支都无法匹配(捕获)这个异常,那么JVM将会终止当前方法执行,并把异常对象“抛”给调用者。如果调用者处理,程序就挂了。...2、try: 捕获异常第一步是用try{…}语句块选定捕获异常范围,将可能出现异常业务逻辑代码放在try语句块。...自定义异常 6.1 为什么需要自定义异常  Java不同异常,分别表示着某一种具体异常情况。...那么在开发总是有些异常情况是核心没有定义好,此时我们需要根据自己业务异常情况来定义和业务相关异常

1.2K30

java异常捕获及处理「建议收藏」

将要被监听代码(可能抛出异常代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。 catch — 用于捕获异常。catch用来捕获try语句块中发生异常。...Java 内置异常 Java 语言定义了一些异常在 java.lang 标准包。 标准运行时异常子类是最常见异常。...在catch捕获异常时,为什么不考虑使用Throwable类型,而只是使用Exception来进行接收? Throwable表示范围要比Exception大。...再次注意:处理多个异常时,捕获范围小异常要放在捕获范围大异常之前处理。 throw和throws区别?...assert关键字(了解) 在Java,assert关键字是从JAVA SE 1.4 引入,为了避免和老版本Java代码中使用了assert关键字导致错误,Java在执行时候默认是启动断言检查

1.7K40

python2为什么在进行定义时最好

继承object对象,只拥有了doc , module 和 自己定义name变量, 也就是说这个命名空间只有三个对象可以操作....Animal继承了object对象,拥有了好多可操作对象,这些都是高级特性。...对于不太了解python同学来说,这些高级特性基本上没用处,但是对于那些要着手写框架或者写大型项目的高手来说,这些特性就比较有用了,比如说tornado里面的异常捕获时就有用到class来定位名称...,还有高度灵活传参数时候用到dict来完成....最后需要说清楚一点, 本文是基于python 2.7.10版本,实际上在python 3 已经默认就帮你加载了object了(即便你没有写上object)。

1.2K20

用Exception捕获所有异常技术是怎么用

3.用Exception捕获所有异常   马克-to-win:注意,一个事实是:Exception是所有其他异常,所以Exception捕获所有的异常。...马克-to-win:问题是用Exception来捕获所有的异常,这个技术有什么好处和缺点?好处就是:不管发生什么异常,都能进入Exception catch块儿,这样,程序都不崩溃。...马克-to-win:缺点就是:不能根据特定异常做特定处理。马克-to-win:比如,对于以上例子,我们可以用以下技术,Exception来捕获所有的异常,都可以达到程序崩溃目的。...马克-to-win:因为Exception是所有其他异常。...            arg1 = Integer.parseInt(s);             result = arg1 /0;             System.out.println("try完成

45840

异常1.异常简介2.捕获异常3.异常传递4.抛出自定义异常5.异常处理抛出异常

这样文件或目录) 异常: 当Python检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误提示,这就是所谓"异常" 2.捕获异常 1.捕获异常try...except... ?...·把可能出现问题代码,放在try ·把处理异常代码,放在except 2.python异常处理 BaseException            所有异常 SystemExit                  ...5.捕获所有异常 ? ? 6.else 在if,它作用是当条件不满足时执行实行;同样在try...except...也是如此,即如果没有捕获异常,那么就执行else事情 ?...__init__()说明 这一行代码,可以调用也可以不调用,建议调用,因为__init__方法往往是用来对创建完对象进行初始化工作,如果在子类重写了父__init__方法,即意味着父很多初始化工作没有做...,这样就不保证程序稳定了,所以在以后开发,如果重写了父__init__方法,最好是先调用父这个方法,然后再添加自己功能 5.异常处理抛出异常 ?

1.8K30

java最顶级异常Throwable

参考链接: Java链式异常 Throwable是整个异常体系父级,当然最终追根溯源到底当然要归于Object。...为什么序列化?  2. 源码并没有看到继承Object这个行为,但是默认是继承了怎么做到?  3. 这两个子类又是干什么为什么不能直接在Throwable一个来处理? ...子类Error和Exception  Error主要是用于表示Java和虚拟机内部异常信息,而Exception异常则是由于程序可能存在各种问题,是需要使用者去注意和捕获异常。 ...从异常设计中体会到,设计者抽象思维与设计水平令人叹服,通过一个去抽象出所有异常通用方法与表示形式以及其表达实体结构,而且通过继承方式对异常这个领域做一个水平划分,将其切分为Error和Exception...从扩展性上而言,由于Throwable实现异常通用部分,那么,如果再有特殊异常分类的话,可以通过继承Throwable方式去扩展该异常体系,当然,我们最常用可能不会涉及到直接继承Throwable

86430

SpringBoot如何实现接口统一返回和异常统一捕获

主要是看beforeBodyWrite()方法,在这个方法,如果Controller返回已经是Result,那就直接返回Result。如果不是,那就使用Result去包装。...“这里我又有一个疑问,接口正常返回已经被Result包裹了,如果接口抛异常该怎么返回一样格式呢?” 全局异常捕获 这里就需要全局异常捕捉了。...关于全局异常捕捉,相信很多童鞋都知道了: 我们需要写一个捕捉,在上面添加@ControllerAdvice注解,然后编写处理异常方法: 我们添加@ResponseBody注解和@ExceptionHandler...优雅抛异常 然后我们编写一个业务异常判断: 这里只截取了部分代码,里面其实只有两个方法checkArgument()和checkNotNull()。他们有什么用呢?...这篇文章写到这里就结束了,本文主要讲解了: 如何实现接口统一返回 如何自定义业务异常,并被统一捕获 如何优雅异常 如果还有改进,欢迎大家积极交流。

1.2K10

【Python面试】 列举Python标准异常

最近公众号新增加了一个栏目,就是每天给大家解答一道Python常见面试题,反正每天贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试同学,提供一点点帮助!...废话不多说,开始今天题目: 问:列举几个Python标准异常?...下面用表格列出所有的异常 : 异常名称 描述 BaseException 所有异常 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception...常规错误 StopIteration 迭代器没有更多值 GeneratorExit 生成器(generator)发生异常来通知退出 SystemExit Python 解释器请求退出 StandardError...所有的内建标准异常 ArithmeticError 所有数值计算错误 FloatingPointError 浮点计算错误 OverflowError 数值运算超出最大限制 ZeroDivisionError

66240
领券