使用系统异常

3

我正在创建一个项目,并添加对生成电子邮件的类的引用,其中包括发生异常和很多好东西的信息。

我的问题是,如果我把它放在一个方法中,在Catch{}中调用它,我该如何在整个项目中做到这一点,以便我只需要在catch中命名方法,它就能在项目的每个页面上使用。

var exceptionUtility = new genericExceptions();
exceptionUtility.genericSystemException(
ex,
Server.MachineName,
Page.TemplateSourceDirectory.Remove(0, 1) + Page.AppRelativeVirtualPath.Remove(0, 1),
ConfigurationManager.AppSettings["emailSupport"],
ConfigurationManager.AppSettings["emailFrom"],
string.Empty);

如果你的意思是在每个方法调用或属性调用中添加Try/Catch,那么我会说这是一种不好的编码风格。在每个层面上处理异常都是昂贵的。 - Zenwalker
我会在我的方法中使用try/catch,并将其添加到每个catch{}中,以使其更好。 - StudentRik
Jeffery Ritcher建议在代码库中任何地方都不要添加try catch。相反,允许所有异常上升。在顶部(例如App启动时的Main())收集它们。这样,您将了解应用程序中的每个角落问题,同时提高质量和性能,也不会有太多问题。在每个级别处使用try/catch有点儿吵闹。 - Zenwalker
@zenwalker 只要您不实际抛出异常,try{}catch{}的性能影响就很小。 - CodesInChaos
这段代码对项目中的问题有效,并且会发送问题以及所在的行/页。我想知道是否可以将其放入一个方法中并在Catch{}中引用它,在项目中不断调用该方法。 - StudentRik
@CodesInChaos 是的,没错。但如果不抛出异常,那么就会被吞噬。这可能会导致许多其他未知问题 :) 而且还会有很多噪音。 - Zenwalker
1个回答

1
在 applicationError 方法中,您可以处理它。
在每个 catch 块中抛出错误。
private void ThrowingMethod()
{
    try
    {
        throw new InvalidOperationException("some exception");
    }
    catch
    {
        throw;
    }
    finally
    {

    }
}

Global.asax的以下事件中获取它。
void Application_Error(object sender, EventArgs e)
{

}

这是一个msdn链接
http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/aspnet-error-handling

http://msdn.microsoft.com/en-us/library/24395wz3%28v=vs.100%29.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接