我有以下代码:
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。我在这里想念什么?
因为它是在通过@ 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] 删除。
我来说两句