我在这一行收到错误:
private SpriteSheet spriteSheet= new SpriteSheet("Sprites/player.png");
我在SpriteSheet类中有捕获:
public SpriteSheet(String path) throws IOException{
BufferedImage image=null;
try{
image=ImageIO.read(SpriteSheet.class.getResourceAsStream(path));
}
catch(IOException e){
e.printStackTrace();
}
if(image==null){
return;
}
this.path=path;
this.width=image.getWidth();
this.hight=image.getHeight();
this.pixels=image.getRGB(0, 0, width, hight, null, 0, width);
}
问题已解决: 我从构造函数中删除了抛出IOException。谢谢大家的答案。
答案 0 :(得分:1)
所有Unreported XYZException; must be declared
错误的原因都是相同的:有一种方法可以为throw
例外调用或明确XYZException
,而且没有catch
阻止它直接或通过其中一个超类来覆盖异常。
请注意,您无法在声明的初始化表达式中捕获异常:
private SpriteSheet spriteSheet= new SpriteSheet("Sprites/player.png");
引发new SpriteSheet
的{{1}}调用会在您的构造函数的上下文中发生,并且周围没有IOException
/ try
。
如果要使用抛出已检查异常的方法调用进行初始化,则需要提供带花括号的初始化块,并将初始化代码放在那里:
catch