gpt4 book ai didi

C# 重载 try/catch

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:54 24 4
gpt4 key购买 nike

是否可以在 C# 中重载 try/catch 语句?如果做不到这一点,是否可以继承并实现类似的功能?

我们正在添加 ELMAH到现有的 Web 应用程序,代码广泛使用 try/catches,在验证摘要中显示错误而不是显示错误页面。由于错误在 catch 语句中被捕获,因此 ELMAH 假定错误正在被处理;实际上,它们只是以更美观的方式显示。

这是它正在做的一个示例:

try
{
//code here...
}
catch (Exception ex)
{
customValidatorError.IsValid = false;
customValidatorError.ErrorMessage = ex.Message;
}

理想情况下,重载只会告诉 Elmah 通过 ErrorSignal.FromCurrentContext().Raise(e);

将异常添加到日志中

由于该技术在项目中的使用频率较高,我不希望每次使用该技术时都添加该代码。为每个错误页面添加自定义错误页面而不是将错误添加到验证摘要也超出了项目的范围。

最佳答案

如您所见,将所有内容包装在 try/catch 中通常并不是您真正想要的。您最终会“吞下”您可能想记录在某处的异常。如果您确实想在带有自定义验证器的页面上显示异常消息,您可能应该重新抛出异常,以便将其冒泡。 ASP.NET 将允许您设置“全局”错误处理。如果你想吞下异常,你可以在一个地方做。如果你想用其他方法向 ELMAH 发送信号或记录它们,你可以在一个地方完成。这使您的异常处理保持干燥。

Pro tip: Use throw; rather than throw ex;. This will keep the original stack trace.

关于C# 重载 try/catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7892308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com