C# 显示自定义异常消息

C# 显示自定义异常消息,c#,asp.net,exception,exception-handling,C#,Asp.net,Exception,Exception Handling,我试图在保留内部异常的同时显示自定义异常消息 以下是我的示例代码: public class Class1 { public Class1() { try { throw new WebException("Initial Exception"); } catch (WebException we) { throw new myException("Custom Message", we); } } } publi

我试图在保留内部异常的同时显示自定义异常消息

以下是我的示例代码:

public class Class1
{
public Class1()
{
    try
    {
        throw new WebException("Initial Exception");
    }
    catch (WebException we)
    {
        throw new myException("Custom Message", we);
    }
}
}

public class myException : WebException
{
public myException(string msg, WebException e) : base(msg, e) { }
}
运行此代码时,会在调试器中显示自定义消息:

但仍将innerexception消息发送到客户端:


我做错了什么?如何在显示自己的自定义消息时保留内部异常?

我怀疑这是因为ApplicationException没有得到有效处理,catch块抛出一个异常,然后将其作为基本异常拾取。然后,调试器将列出这两个异常

我想这会给你带来你想要的行为(我写的是一个控制台应用程序)


自定义用户看到的消息的方法是提供一个自定义错误页面


请注意,它仍然显示您的自定义myException信息。我猜这是ASP.NET服务器的一个“功能”,它首先显示内部异常数据作为问题的源发起人。我想,这可能是为了方便服务器端调试。可能有一个服务器配置选项来控制这一点,但我不知道。“你不应该定义从ApplicationException派生的新异常类;而应该使用exception。此外,你不应该编写捕获ApplicationException的代码。”-MicrosoftAlso,我想你可能想要
throw而不是
抛出e
作为最后的
异常
捕获
处理程序-它将保留堆栈信息,而您所拥有的则不会。@JesseC.Slicer,我只是将此代码用作一个示例,我在
抛出方面没有任何运气因为我仍然希望保留初始异常
using System;

namespace ConsoleApplication2
{
    class Program
    {
    static void Main(string[] args)
    {
        myException exception;
        try
        {
            throw new ApplicationException("Initial Exception");
        }
        catch (ApplicationException e)
        {
            exception = new myException("Custom Message", e);
        }
        catch (Exception e)
        {
            throw e;
        }

        if (exception != null)
        {
            throw exception;
        }
    }
}
}


public class myException : ApplicationException
{
public myException(string msg, ApplicationException e) : base(msg, e) { }
}