如何处理自定义异常类中的所有异常?

时间:2013-10-11 07:33:14

标签: c# c#-4.0 fortify

我想处理自定义异常类的所有异常。我不想在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)
    {
    }
}

希望你能得到我的问题。

2 个答案:

答案 0 :(得分: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.
}

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

答案 1 :(得分: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.
}

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