在我的项目中,我们有一个基本例外。为了处理显示错误对话框,日志等。 进出口寻找一种方式来处理该异常的所有派生类,我想这会工作:捕捉C++基本例外
try
{
main_loop();
}
catch (const MyExceptionBase* e)
{
handle_error(e);
}
由于抛出可以通过一个指向其父表示每个子实例。但是,不,当现在抛出异常时,它是一个未处理的异常。
这是为什么? C++只会抛出异常作为引用吗?从而渲染我的catch块无用?但是为什么这甚至首先编译?
我能想到的唯一的另一种方法是这样的:
try
{
main_loop();
}
catch (const ExceptionA& e)
{
handle_error(e);
}
catch (const ExceptionB& e)
{
handle_error(e);
}
catch (const ExceptionC& e)
{
handle_error(e);
}
这似乎有点难看。什么是正确的方法来做到这一点?没有基础的异常类?还是可以按我想要的方式解决?
ps:handle_error()
所做的只是简单地使用基类函数display_message_box()
并干净地关闭程序。
我不知道引用也可以引用派生类实例,生病尝试一下,谢谢! :) – Mizipzor 2009-02-12 13:13:29