一个异常处理程序用于处理一类的所有异常

2024-01-12

我有一个包含多种方法的类,并且希望为所有方法提供一个异常处理程序。 这些方法有很多,而且它们有不同的参数,为每个方法都编写 try/catch 会很丑陋。

您是否知道一种方法,我可以通过在类异常处理程序中使用一个来处理所有这些异常处理程序。

UPDATE:


很多人问我为什么。原因是我正在用各种方法调用数据源。 所以我的类有函数 getData1、gedData2、getData3、getData4、...、getDataN。问题是无法检查连接是否仍然打开,并且创建新连接的成本非常非常高。因此,我尝试重用连接,如果下一次调用的连接失败,我会捕获此错误并重新连接并重试。这就是为什么我需要这个 try/catch all 块。

对所有函数执行此操作:

try{    
   datasource.getData()
}
catch(ConnectionException)
{
   datasource.Connect();
   datasource.getData()
}

Thanks


您可以使用委托将方法的代码传递到单个 try catch 中,如下例所示:

    private void GlobalTryCatch(Action action)
    {
        try
        {
            action.Invoke();
        }
        catch (ExpectedException1 e)
        {
            throw MyCustomException("Something bad happened", e);
        }
        catch (ExpectedException2 e)
        {
            throw MyCustomException("Something really bad happened", e);
        }
    }

    public void DoSomething()
    {
        GlobalTryCatch(() =>
        {
            // Method code goes here
        });
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一个异常处理程序用于处理一类的所有异常 的相关文章

  • 将列表数组中的值绑定到列表框

    任何机构都可以给出一个简短的示例 用于将列表数组中的值绑定到 c net 中的列表框 这取决于您的列表数组的情况 让我们从一个简单的示例开始 List
  • 在 C++ 中,std::string::push_back() 的摊余复杂度是 O(1) 吗?

    我知道标准指定它适用于向量 但是字符串呢 是的 它是摊销常数时间 请参见第 716 页的表 101本文件的 http www open std org jtc1 sc22 wg21 docs papers 2012 n3485 pdf 表
  • C/C++ 程序是在 CPU 上运行还是在内核上运行?

    我已经编程很多年了 但有一件事我一直不明白 有两种类型的编程语言 编译型语言和解释型语言 编译型语言首先需要编译成解释型语言 然后才能执行 例如 C C 需要先编译为机器语言 然后才能执行 我的问题来了 谁真正运行已编译的 C C Wind
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • Windows CE 6.0 和运行时链接到调试 DLL /MDd

    我在 x86 PC 上使用 Windows CE 6 0 R3 我已经为该平台构建了 NK bin 和 SDK 但我有一些问题需要了解如何使用 MTd 调试 DLL 构建控制台应用程序 如果我尝试构建这个 main c with MDd i
  • std::async 参数的生命周期是多少?

    看来函数的参数是通过std async分享未来的生活 include
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 是否可以获取指向装箱非托管值类型的指针?

    是否可以获取指向装箱非托管值类型的指针 而无需编写对每个支持的类型进行强制转换的大型 switch 语句 就像是 object val Contains a boxed unmanaged value such as int long by
  • 为什么 .Net 框架指南建议您不要使用 ref/out 参数?

    显然 他们很 混乱 这是认真的原因吗 你还能想到其他的吗 你见过有多少开发人员并不真正理解 ref out 吗 我在真正需要的地方使用它们 但在其他地方则不然 它们通常仅在您想有效返回两个或多个值时才有用 在这种情况下它至少值得thinki
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • 在 OpenGL 中使用不同的着色器程序?

    我必须在 OpenGL 中针对不同的对象使用两个不同的着色器程序 我发现我必须使用glUseProgram 在不同的着色器程序之间切换 但对此没有太多信息 鉴于我有两个用于不同对象的不同着色器程序 如何为每个着色器程序生成和绑定 VAO 和
  • C++ 中类型信息何时向后流动?

    我刚刚看了 Stephan T Lavavej 的演讲CppCon 2018关于 类模板参数推导 在哪里某个点 https youtu be H ut6j1BYU t 941他顺便说 在 C 中 类型信息几乎永远不会向后流动 我不得不说 几
  • 如何将对 System.Data.DataSetExtensions 的引用添加到网站 ascx.cs 文件?

    我们正在处理一个网站项目并尝试参考System Data DataSetExtensions 使用 Web 应用程序会更好 不过 技术主管有她的理由 这是我们尝试过的 找到装配路径 打开 Visual Studio 命令提示符并运行sn e
  • 如何在Phone类库项目中添加ResourceDictionary并访问它

    我正在开发一个项目 其中我有一个引用图书馆项目的子项目 在我的库项目 电话类库 中 如何创建 ResourceDictionary xaml 其中我需要添加一些样式并在 xaml 文件和 cs 文件中使用它 我需要访问 xaml 文件中的
  • 为什么 C++20 范围不只提供管道语法?

    我知道这个问题听起来很奇怪 所以这里有一些背景信息 最近 我很失望地了解到 C 20 范围内的映射缩减并不像人们所期望的那样工作 即 const double val data transform accumulate 不起作用 你必须这样
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • 有没有办法处理Java堆空间异常[重复]

    这个问题在这里已经有答案了 我正在寻找将文件输入流转换为大文件 文件大小为 100MB 并且抛出 java lang OutOfMemoryError Java Heap space import java io FileInputStre
  • 如何在 C 预处理器中可靠地检测 Mac OS X、iOS、Linux、Windows? [复制]

    这个问题在这里已经有答案了 如果有一些跨平台 C C 代码需要在 Mac OS X iOS Linux Windows 上编译 我如何在预处理器过程中可靠地检测到它们 大多数编译器都使用预定义的宏 您可以找到列表here http sour
  • 您的 C++ 程序中是否仍然存在内存分配失败问题 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在为公司写一些指导方针 我需要回答一些棘手的问题 这一项是相当困难的 解决方案可以是 根本不跟踪 确保使用 new 分配对象 这会在分配失败
  • File.Move 的原子性

    我想将目录中的文件重命名为原子事务 该文件不会更改目录 该路径作为 NTFS 文件系统的 UNC 路径提供 可能位于服务器 03 或 08 上 File Move 对于这些目的来说是原子的吗 例如 它要么成功完成 要么失败 以使原始文件仍然

随机推荐

  • 将 phpinfo() 暴露给最终用户可能会产生哪些安全问题?

    If a phpinfo 转储显示给最终用户 恶意用户利用该信息最糟糕的情况是什么 哪些领域最不安全 也就是说 如果你的phpinfo 被公开展示 将其删除后 您应该在哪里关注 关注恶意利用 如果您的网站容易受到攻击 了解文件系统的结构可能
  • 如何在 Spring Boot 中使用 WebSphere Runtime 库作为独立应用程序

    我正在尝试构建一个 Spring Boot 控制台应用程序 首先 我使用 spring 初始化程序 v 1 3 1 这是简单的 hello world 没有 Web 没有 JPA 什么都没有 现在我编辑了 pom xml 并添加了对名为的
  • MSBuild 正在用旧版本替换 Newtonsoft.Json.dll

    我正在 TeamCity 中使用 MSBuild 运行程序来构建 ASP net Web api 并运行单元测试 一切正常 直到我升级到 Microsoft Build Tools 2017 15 7 2 突然 msbuild 从 C Pr
  • EJB 中的本地/远程和无接口视图是什么?

    我试图理解 EJB 中不同客户端视图的目的和原因 有人可以尝试解释一下吗 远程客户端查看 当您的 EJB 及其客户端位于分布式环境中时 这意味着 EJB 和客户端将驻留在单独的 Java 虚拟机上 示例 托管在 WebSphere Appl
  • VS2019 的水晶报表

    I have installed VS2019 on a fresh PC I tried installing Crystal Reports developer version for Microsoft Visual Studio C
  • UIImagePickerController 中的自定义裁剪尺寸

    我已经为此苦苦挣扎了一段时间 因为关于这个主题的文档很少 我有一个UIImagePickerController在我的 iPhone 应用程序中 我用它来选择稍后要用作视图背景的图像 这很容易做到 不幸的是 如果用户从相机胶卷中选择一张大图
  • PHP 之上的新语言?

    我是一名 PHP 开发人员 我喜欢PHP 如果你知道如何使用它 它是一种非常好的语言 但我知道它允许非常糟糕的设计 http www quora com What are the crawling horrors of PHP有时 它让我想
  • 错误:安装 gollum 时出错:错误:无法构建 gem 本机扩展

    我无法安装gollum wiki全新安装后ruby v2 2 2 via rbenv I run Ubuntu Gnome 14 04 Trusty Thar 这是安装日志 user host dev drafts gem install
  • Keras 中一维 CNN 的激活函数错误

    我正在创建一个模型来对输入波形是否包含 I2C 线的 SDA 上升沿进行分类 我的输入有 20000 个数据点和 100 个训练数据 我最初找到了有关此处输入的答案Keras 1D CNN 如何正确指定维度 https stackoverf
  • 密码强度[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 嘿 我想知道如何最好地衡量密码强度 我发现了两个不同的页面 http rumkin com tools password passchk php ht
  • 在 scipy 最小化过程中打印当前评估的参数

    我正在尝试使用Python最小化函数scipy optimize minimize 以确定四个不同的参数 我想在优化算法的每一步打印当前评估的参数 这样我就可以使用它们来使我的初始猜测更好 我怎样才能做到这一点 Use the callba
  • 浏览器在 OPTIONS 调用中不会发送“Authorization”标头

    我有一个非常简单的 HTTP 调用 fetch http 127 0 0 1 5500 v1 homes method GET mode cors credentials same origin headers Authorization
  • Android 中的自定义按钮:当我从 xml 读取背景时如何获取边框/边缘/框架?

    在 xml 中使用 Android Shapes 我定义了一个渐变 用作按钮的背景 这一切都很好 但按钮周围没有边缘 我希望它看起来与普通的 Android 按钮类似 但我需要更灵活地控制颜色和外观 形状定义如下
  • 反序列化时缺少 JSON.Net 构造函数参数

    我有一个简单的对象 我通过 JSON 进行往返 它序列化得很好 但我反序列化它 其中一个值设置为默认值 在本例中为 0 这是为什么 这是我的对象 public class CurrencyExchangeRate public string
  • java.lang.NoClassDefFoundError:无法初始化类org.apache.activemq.util.IdGenerator

    我正在尝试使用ActiveMQ 5 10 0 with SoapUI 4 6 and Hermes 1 14 当我尝试添加队列时出现以下错误 我猜 Hermes 找不到这个型号IdGenerator在任何已加载的罐子中 哪个是 active
  • 为什么 Fortran 中的单元测试框架依赖于 Ruby 而不是 Fortran 本身?

    总结 FRUIT 只能与 Fortran 编译器一起使用 尽管它的功能可以通过使用 Ruby 来增强 查看作者 Andrew Chen 的以下答案 Fortran 可用的单元测试框架 XUnit 似乎包括 funit http nasarb
  • 用于电子邮件警报和 ping 的脚本

    我需要帮助来更新此脚本 以便在 ping 失败时向另一台主机发送另一个 ping 除了现在在 ping 失败时发送的电子邮件之外 如何从这个脚本中做到这一点 bin bash HOSTS IP ADRESS COUNT 4 for myHo
  • R中读取文件时出错

    我是 R 社区的新人 在编写我的第一个程序时 我遇到了一个愚蠢的问题 当尝试使用以下代码读取 RDS 文件时 tweets lt readRDS RDataMining Tweets 20160212 rds 会出现以下错误 Error i
  • 使用全文搜索来搜索mysql中不完整的单词

    我正在制作一个图书馆管理系统 我在从 mysql 数据库搜索书籍时遇到问题 为了在 mysql 中搜索数据 我们使用全文搜索 但只有给出完整的单词时它才有效 如果用户输入不完整的单词而不是实际单词 是否有任何功能可以搜索 例如 如果书名是微
  • 一个异常处理程序用于处理一类的所有异常

    我有一个包含多种方法的类 并且希望为所有方法提供一个异常处理程序 这些方法有很多 而且它们有不同的参数 为每个方法都编写 try catch 会很丑陋 您是否知道一种方法 我可以通过在类异常处理程序中使用一个来处理所有这些异常处理程序 UP