尝试捕捉块侵扰

本文关键字: | 更新日期: 2023-09-27 17:58:10

我正在为一家公司开发一套Excel插件。我以前没有做过插件,所以我对其中的一些复杂之处不是很熟悉。在交付我的第一个产品后,用户遇到了我在测试过程中没有经历/遇到/注意到的错误。此外,我在VisualStudio调试环境中复制它们时遇到了困难。

我最终编写了一个轻量级的日志记录类,该类接收来自程序各个部分的消息。这个项目规模不大,所以工作量不大。但我最终得到的几乎是Try…中的每一行代码。。。Catch块,这样我就可以记录用户环境中发生的事情。

我认为我实现得很好,我尽量避免将调用包装到其他类或模块,而是将块放在调用中,这样我就可以更准确地识别是谁在抛出,而且我不会吞下任何东西,我总是在记录了我感兴趣的信息后抛出异常。

我的问题是,基本上,这可以吗?有更好的方法来解决这个问题吗?我偏离基地了吗?

快速编辑:重要的是,它确实奏效了。我能够确定并解决这个错误。

尝试捕捉块侵扰

不,你没有偏离底线。我相信这是在编写外接程序时处理错误的唯一方法。我正在销售一个Outlook插件,它使用这种模式。不过有几个注意事项:

  1. 您只需要包装顶级方法,这些方法要么直接暴露给用户界面,要么由其他事件触发。

  2. 确保您的日志记录例程递归遍历Exception树,同时记录InnerException。

  3. 您可以考虑显示某种错误形式,而不是重新考虑异常。

然后对这些笔记发表几点评论:

  1. 我相信你理解这一点,但你的评论"几乎每一行代码都被包装好了(…)"让我想在下面加下划线。但是,所有您的代码最终都应该在catch (System.Exception)-块中,这样您就可以记录您的异常。我完全不同意格雷格说这是"危险的"。危险的是不处理您的例外情况。

  2. 如果你这样做,我认为你不需要"避免包装对其他类和模块的调用",如果我理解正确的话。我发布了一个方便的扩展方法GetAsString,它允许我在github上记录我需要的东西。

  3. 在Outlook中,如果Outlook本身出现异常,您的外接程序可能会被禁用,甚至在后台线程上发生时使Outlook崩溃。Excel中不是一样吗?因此,我竭尽全力不让任何异常退出我的应用程序。当然,您需要确保您的应用程序在此之后可以继续运行,或者允许优雅地关闭。

相关文章:
  • 没有找到相关文章