我以为我可以捕获我项目中另一个类抛出的异常,但我必须做错了。在第一堂课中,我用try / catch块来调用另一个类:
try
{
ImportPowerPoint.CreateTitle(textBoxPpt.Text, textBoxPkg.Text);
}
catch (FormatException ex)
{
MessageBox.Show(ex.Message, "ERROR",
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
}
在第二节课中,这是我抛出异常的地方:
if (!_layoutMap[(int)Layouts.A].ContainsValue(Fields.Title))
throw new FormatException("Standard (A) Layout does not contain a title.");
if (!_layoutMap[(int)Layouts.A].ContainsValue(Fields.Txt1))
throw new FormatException("Standard (A) Layout does not contain a txt1.");
if (!_layoutMap[(int)Layouts.A].ContainsValue(Fields.Prompt))
throw new FormatException("Standard (A) Layout does not contain a prompt.");
当我运行程序时,它会立即中断抛出异常的位置,而不是显示我在try / catch块中定义的错误窗口。我没有正确处理这个try / catch吗?
为了澄清,我通过从我正在解析的PowerPoint中删除某些部分来强制执行异常。例如,当程序失败时,因为我删除了Title
字段,抛出的异常是FormatException类型。调用类中的catch
不应该处理这个吗?
答案 0 :(得分:0)
在IDE中断开以通知抛出异常。如果再次按F5继续运行,则应该命中catch
处理程序。
答案 1 :(得分:0)
与异常没有任何类相关。您的调用代码(ImportPowerPoint.CreateTitle(...);
)应该能够捕获CreateTitle()
抛出的异常。
查看您的Visual Studio是否配置为捕获所有异常(与仅捕获未处理的异常相反):
您通常希望IDE捕获未处理的异常,因此我会检查其他列。
答案 2 :(得分:0)
这里的问题似乎是因为这是一个多线程程序。我正在考虑使用AppDomain.UnhandledException Event来处理我的例外情况。