我有这样的控制台程序:
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();
}