【发布时间】:2013-09-25 00:16:02
【问题描述】:
我在'main'方法中有以下代码:
static void Main(string[] args)
{
try
{
int a = 0;
int b = 5;
b /= a;
}
catch (MyException ex)
{
Console.WriteLine(ex.Message)
}
}
MyException 类如下:
public class MyException : Exception
{
public MyException()
{
}
}
程序在b /= a; 上中断,而我希望它转到catch 命令。
如果我将MyException 替换为Exception,则会捕获异常并且程序不会中断。
如何捕获自定义异常?
【问题讨论】:
-
为什么
b /= a会抛出你的异常?它抛出一个System.DivideByZeroException。如果你想捕捉你的异常,你必须抛出你的异常。您认为通过创建自定义异常可以完成什么? -
因为 MyException 继承自 Exception。这就是为什么我希望捕获任何异常。
-
如果抛出的是DevisionByZeroException,因为这个异常不能转换为MyException,它不会被catch(MyException)捕获
-
那是......不是它的工作原理。例外不是捕捉。您严重误解了异常的工作方式和类继承的工作方式。
-
如何捕获自定义异常?您必须抛出该自定义异常或该异常的子类。
标签: c# exception custom-exceptions