首页 / C# / c# – 如何明确表示不抛出异常?
c# – 如何明确表示不抛出异常?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何明确表示不抛出异常?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1380字,纯文字阅读大概需要2分钟。
内容图文
![c# – 如何明确表示不抛出异常?](/upload/InfoBanner/zyjiaocheng/789/84a3ca7338684ab4bac6348b6542b2d6.jpg)
这可能是一个广泛的问题,但最近我想知道以下内容:在我们的C#后端,我们有很多地方将一些代码包装在try / catch块中,特别是调用外部WcF服务.其中一些调用对应用程序至关重要,因此在catch块中我们记录错误并重新抛出,如:
catch(Exception ex)
{
_logger.Error("Some good error message");
throw ex;
}
另一方面,我们允许失败的服务,但我们仍然想记录错误,所以它们看起来像:
catch(Exception ex)
{
_logger.Error("Some good error message");
}
现在阅读团队成员的代码我不能确定他们是否忘了扔或者这是预期的行为.
问:有没有办法,分别是.什么是默认方式,明确地不重新抛出(不在代码中包含注释).
我考虑过这样的事情:
catch(Exception ex)
{
_logger.Error("Some good error message");
NotThrowingHereOnPurpose();
}
// ...
// and further below a private method
// ...
private void NotThrowingHereOnPurpose(){}
解决方法:
这里可能有用的一种方法是更改??调用您明确允许失败的代码的方式,使其看起来根本不像try / catch块.
例如,您可以编写一个执行错误报告的辅助方法,并使用表示为lambdas的操作来调用它:
void InvokeFailSafe(Action action, Action<Exception> onFailure = null) {
try {
action();
} catch (Exception e) {
if (onFailure != null) {
onFailure(e);
}
}
}
现在代替try / catch你会写这个:
InvokeFailSafe(
() => {
... The code that may fail
}
, exception => _logger.Error("Some good error message: {0}", exception)
);
或者像这样,如果你不想记录任何东西:
InvokeFailSafe(
() => {
... The code that may fail
}
);
如果你用这种方式编写代码,就会对丢失的throw语句产生怀疑.
内容总结
以上是互联网集市为您收集整理的c# – 如何明确表示不抛出异常?全部内容,希望文章能够帮你解决c# – 如何明确表示不抛出异常?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。