-2

我想处理自定义异常类的所有异常。我不想在 try 块中引发自定义异常,我希望每个异常都会被我的自定义异常类捕获。

我不想这样做:

private static void Main(string[] args)
{
    try
    {
        Console.WriteLine("Exception");
        throw new CustomException("Hello World");
    }
    catch (CustomException ex)
    {
        Console.WriteLine(ex.Message);
    }
    Console.ReadLine();
}

我要这个:

private static void Main(string[] args)
{
    try
    {
        Console.WriteLine("Exception");
        throw new Exception("Hello World");
    }
    catch (CustomException ex)
    {
        Console.WriteLine(ex.Message);
    }
    Console.ReadLine();
}

public class CustomException : Exception
{
    public CustomException()
    {
    }

    public CustomException(string message) : base(message)
    {
    }

    public CustomException(string message, Exception innerException)
        : base(message, innerException)
    {
    }

    protected CustomException(SerializationInfo info, StreamingContext context) 
        : base(info, context)
    {
    }
}

希望你能得到我的问题。

4

2 回答 2

2

您不能更改现有的异常类。

但是您可以捕获异常并将其转换为 CustomException:

try
{
    try
    {
        // Do you thing.
    }
    catch(Exception e)
    {
        throw new CustomException("I catched this: " + e.Message, e);
    }
}
catch(CustomException e)
{
    // Do your exception handling here.
}

我不知道这是你想要的,但我认为这是你能做的最接近的。

于 2013-10-11T07:54:36.333 回答
1

我猜您想实现这一点,因为您想将每个异常都视为 CustomException。那么,为什么不以这种方式处理所有异常呢?以处理 CustomException 的方式处理每个异常。如果有一些您不想作为 CustomException 处理的异常,那么您想要实现的不是您的问题。

如果您绝对必须将所有内容都视为 CustomException,则可以执行以下操作;

try
{
   //Something that causes any form of exception
}
catch (Exception ex)
{
   throw new CustomException(ex.Message); //Caught and handled in another place.
}

但是,我认为这不是一个明智的做法。

于 2013-10-11T07:49:05.930 回答