未报告的IOException;必须声明为抛出

时间:2014-11-23 16:27:25

标签: java image exception

我在这一行收到错误:

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。谢谢大家的答案。

1 个答案:

答案 0 :(得分:1)

所有Unreported XYZException; must be declared错误的原因都是相同的:有一种方法可以为throw例外调用或明确XYZException,而且没有catch阻止它直接或通过其中一个超类来覆盖异常。

请注意,您无法在声明的初始化表达式中捕获异常:

private SpriteSheet spriteSheet= new SpriteSheet("Sprites/player.png");

引发new SpriteSheet的{​​{1}}调用会在您的构造函数的上下文中发生,并且周围没有IOException / try

如果要使用抛出已检查异常的方法调用进行初始化,则需要提供带花括号的初始化块,并将初始化代码放在那里:

catch