返回自定义异常

时间:2013-04-13 21:12:22

标签: c# exception

我正在尝试在C#中实现自己的Exception类。为此,我创建了一个派生自Exception的CustomException类。

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

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

    public CustomException(string format, params object[] args)
        : base(string.Format(format, args)) { }

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

    public CustomException(string format, Exception innerException, params object[] args)
        : base(string.Format(format, args), innerException) { }
}

然后我用它

static void Main(string[] args)
{
    try
    {
        var zero = 0;
        var s = 2 / zero;
    }
    catch (CustomException ex)
    {
        Console.Write("Exception");
        Console.ReadKey();
    }
}

我期待我会得到我的例外,但我得到的只是标准的DivideByZeroException。如何使用CustomException类捕获除零异常?感谢。

2 个答案:

答案 0 :(得分:29)

您无法神奇地更改现有代码抛出的异常类型。

您需要throw您的例外才能抓住它:

try 
{
   try
    {
        var zero = 0;
        var s = 2 / zero;
    }
    catch (DivideByZeroException ex)
    { 
        // catch and convert exception
        throw new CustomException("Divide by Zero!!!!");
    }
}
catch (CustomException ex)
{
    Console.Write("Exception");
    Console.ReadKey();
}

答案 1 :(得分:17)

首先,如果你想看到自己的异常,你应该throw代码中的某个地方:

public static int DivideBy(this int x, int y)
{
    if (y == 0)
    {
        throw new CustomException("divide by zero");
    }

   return x/y; 

}

然后:

int a = 5;
int b = 0;
try
{
      a.DivideBy(b);
}
catch(CustomException)
{
//....
}