如果大图像无法在GUI上显示,该怎么办?

问题描述:

这是一个Java代码片段,但我想这个问题是有关其他语言...如果大图像无法在GUI上显示,该怎么办?

public BufferedImage getVisualisation(){ 
    try { 
     BufferedImage visualisation = ImageIO.read(from some inputStream); 
     return visualisation; 
    } catch (IOException e) { 
     // What do I do here? 
    } 
} 

代码从某处读取一些数据,并尝试生成一个BufferedImage。这个图像将被显示,比如说一个JPanel。现在让我们假设IO进程抛出一个摆动,失败并抛出IOException并立即被catch块捕获。

然后我只是抛出另一个异常?我是否返回null?考虑一下将会有代码需要在GUI上显示正确的图像。这不像数值计算出错,并返回0或null。可能有很大一部分GUI不会被绘制。你会创建一个破碎窗口窗格的另一个BufferedImage或其他东西,以便它可以显示通知用户有问题吗?还是让它不上漆,并弹出一个警告对话?或者你只是返回null并在下游进一步处理它?

在这些情况下为用户创造最佳体验的最佳做法是什么?

+0

如果你不能处理这个异常,首先不要抓住它。让异常冒泡到你可以处理的地方。 – Blorgbeard

您需要在某处记录问题,以便开发人员或技术支持人员进行调试。这意味着格式化并将堆栈跟踪打印到日志文件。

至于图像,我会保留一个单独的“图像无法加载”图标来代替失败的图像。可能性是无止境的......你可以让图像在点击时显示堆栈跟踪和错误消息,在图像本身上显示错误(只需一点编码工作)或者在应用程序中运行的任何东西,以通知用户意外发生了。