首页
学习
活动
专区
工具
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 分支 , 不利于代码维护...; 如果将 相似类型的异常 都继承自 一个父类 , 那么每次拦截时 , 只需要拦截一个父类异常即可 ; 定义父类异常 , 其中定义一个纯虚函数 , 该纯虚函数是异常打印 , 或者异常处理的通用操作 ;

    21510

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

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

    1.9K31

    PHP 中的错误处理与异常捕获

    我们将从错误和异常的概念入手,讲解它们的工作原理、PHP 中的错误级别、如何正确使用错误处理和异常捕获、以及如何在实际开发中优雅地处理错误和异常。...异常通常是应用程序中预期外的情况,表示程序的运行状态需要得到特殊处理。与错误不同,异常是通过特定的机制来捕获和处理的,PHP 提供了 try-catch 语句来捕获异常,从而防止程序的崩溃。...异常是面向对象的,在 PHP 中是 Exception 类的实例。2. PHP 中的错误类型与错误级别PHP 将错误分为不同的级别,每个错误级别都有不同的处理方式。...4.3 自定义异常类PHP 允许开发者创建自定义的异常类,通过继承内置的 Exception 类,可以为异常对象添加更多的功能和属性:class MyException extends Exception...我们定义了一个 MyException 类,并在 catch 块中使用它来捕获和处理自定义的异常。

    13400

    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在执行的时候默认是不启动断言检查的

    2.4K40

    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中完成

    49040

    异常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

    99630

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

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

    1.3K10
    领券