如何捕获重新抛出的异常?

约旦1993

我有以下代码:

try
{
    await _policyService.QueuePayment();
}
catch (Exception ex)
{
    var slackError = new ErrorNotificationMessage("{ex.Message}");

    await Notify(slackError);
}

如果异常是安全性异常,我想提供更多详细信息并将其记录到Slack,因此我按如下所示扩展了try / catch块:

 try
{
    await _policyService.QueuePayment();
}
catch (SecurityException ex)
{
    throw new Exception("detailed message", ex);
}
catch (Exception ex)
{
     var slackError = new ErrorNotificationMessage("{ex.Message}");

     await Notify(slackError);
}

但是,这不会捕获重新引发的异常并将其记录到Slack。我在这里想念什么?

卡米洛·特雷文托(Camilo Terevinto)

因为它是在通过@ canton7意见已经提到的,你需要一个try-catch内部的catch (SecurityException ex),为了抓住它。但是,正如前面提到的,这里没有意义。封装异常以更改错误消息也不是常见(或更正确的做法)。

只需使用标准布尔逻辑:

try
{
    await _policyService.QueuePayment();               
}
catch (Exception ex)
{
    var message = ex is SecurityException ? "Some very important message" : ex.Message;
    var slackError = new ErrorNotificationMessage(message);
    await Notify(slackError);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章