除了没有解决方案或替代方案,例如无法打开图像之外,我通常会执行以下操作:
try
{
img.load_from_file("my_image.png");
}
catch( const image_loading_exception& e )
{
/* Could Not Load Image: 'my_image.png' ! */
string err = "Could Not Load Image: " + e.what() + " !"; //
pro::message_box::show( err );
}
现在,这是非常好的错误处理吗?我应该做一些更具描述性的事情,还是尝试解决问题。在处理图像或文件加载失败时,我唯一能够想到的是显示错误消息框。你们做什么?
答案 0 :(得分:4)
这取决于要求:
答案 1 :(得分:2)
你应该做的很大程度上取决于具体情况。
如果此类代码放在处理程序中,例如“文件”|“打开”菜单选项,您打开图像文件,那么它似乎可以接受。
另一方面,如果它被放置在一些皮肤内部深处,适合您的应用,那么很可能这很糟糕。首先,您不知道何时执行此操作以及消息框是否合适。你不知道这次执行的频率(如果这是100张图片中的一张然后显示100个消息框不好......)。在致命的情况下,这可能导致死循环,如果以某种方式显示消息框(或由用户解雇)将导致再次执行此代码。
因此,除非您提供背景信息,否则很难提供合理有用的答案。
另请注意,除非您知道load_from_file
的详细信息或其image_loading_exception
内容向用户显示what()
的内容并不是一个好主意。该字符串很可能是技术信息(或可能)对用户来说无用且不易理解。 (另一方面,如果这只是你或其他程序员的工具应用程序那么它可以接受 - 再次上下文!)
除非你知道image_loading_exception
会在其what()
中执行此操作,否则您可以考虑捕获典型案例(丢失文件,拒绝访问,空文件,损坏文件......)并显示专用(“面向用户的“)消息可能会将what()
默认隐藏或隐藏在某处。