如何知道内置异常或用户定义的异常



我有这样的控制台程序:

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();

如果我输入字母表,它会显示"错误"。如果我输入数字 -20,它也会显示"错误"。

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

是否有一些技巧来检查异常是内置的还是用户定义的?

您应该定义一个自定义异常类,并使用专用的 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();
}

最新更新