如何知道构建异常或用户定义的异常

时间:2018-05-13 06:17:06

标签: c#

我有这样的控制台程序:

int a;
try
{
    Console.Write("Input = "); a = Convert.ToInt32(Console.ReadLine());
    if (a<0)
    {
        throw new Exception("Input Can't < 0");
    }
}            
catch (Exception ex)
{
    Console.WriteLine("Something error");
}
Console.ReadKey();

如果我输入字母,它会显示&#34; Something error&#34;。如果我输入数字-20,它还会显示&#34; Something error&#34;。

我知道如果我将块catch中的代码更改为Console.WriteLine(ex.Message);,它可以显示我的用户定义异常。但是,我不想使用它。

检查异常是构建还是用户定义的一些技巧?

1 个答案:

答案 0 :(得分:1)

您应该定义一个自定义异常类,并使用专用的catch块检查它。

通过派生Exception类来定义新的异常类:

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

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

然后在代码中抛出该异常类型:

void MyMethod()
{
    int a;
    try
    {
        Console.Write("Input = ");
        a = Convert.ToInt32(Console.ReadLine());
        if (a < 0)
        {
            throw new MyException("Input Can't < 0");
        }
    }
    catch (MyException myEx)
    {
        Console.WriteLine("MyException was thrown");
    }
    catch (Exception ex)
    {
        Console.WriteLine("Some other exception was thrown");
    }
    Console.ReadKey();
}