我有几个图像,如下面我的程序中使用的图像。我决定将所有图像移到单独的图像类中以保持程序整洁,但现在我遇到未处理的 IOException
错误。
通过编码Images.fileName
,我可以引用File
,但它要求该文件为static
,当我将其更改为static
时,我遇到了IOException
。
final BufferedImage identity = ImageIO.read(new File("Images/Identity.jpg"));
我有很多String
变量,可以很容易地从其他类访问。没有任何问题,我甚至不必用className.varName
作为序言。
有没有办法解决这个问题?或者最好是更好的方法吗?
答案 0 :(得分:1)
JB Nizet在评论中说的完全正确:
你正在以错误的方式处理这个问题。你的问题了 与图像无关。你的问题是你不明白 与未处理的异常相关的编译器错误消息。所以看了 错误消息,尝试理解它,谷歌它,阅读教程 关于Java中的异常 (docs.oracle.com/javase/tutorial/essential/exceptions),并修复你的 码。并且,如果你真的卡住了,那么发布没有的代码 编译以及完整且准确的错误消息。但是 教程应该让你理解你的代码无法编译的原因
您的问题在于,您急切地初始化字段而不会捕获可能导致的IOException。解决此问题的方法很简单:使用静态初始化程序块:
public class MyImages {
public static final BufferedImage identity;
static {
try {
identity = ImageIO.read(new File("Images/Identity.jpg"));
} catch (IOException e) {
// couldn't read the image...
// do something about it or stop the program or whatever
}
}
// the other stuff of your class
}