为什么我的switch语句会生成IOException

时间:2015-04-29 10:52:53

标签: java error-handling switch-statement ioexception

我有一个开关声明:

public Player player(Colour colour, ScotlandYardView view, String mapFilename) {
    switch (typeMap.get(colour)) {
        case AI:
            return new RandomPlayer(view, mapFilename);
        case GUI:
            return gui(view);
        default:
            return new RandomPlayer(view, mapFilename);
    }
}

我收到未处理的IOException错误。为什么这样,以及如何解决它?

2 个答案:

答案 0 :(得分:0)

好吧,除了codegasmer的回答之外,让我至少回答一下为什么部分:它只是因为你调用的任何方法都会抛出IOException。这可能是typeMap.get()(在这种情况下我不会期望,但在理论上可能),'gui'方法或RandomPlayer的构造函数。

codegasmer显示了一种识别方法,这些方法中的哪一个负责,你会在堆栈跟踪中看到它 - 甚至可以揭示有问题的方法被抛出的方法。

如果您可以直接捕获异常并提供回退解决方案,则可以这样做(例如,通过在catch块中创建回退对象)。更好的是找出,异常的原始原因是什么,然后尽可能避免它。使用调试器可以非常有用。由于我不知道所涉及的课程的任何细节,我不能在这里提供任何进一步的帮助。

答案 1 :(得分:-1)

使用try catch。您正在使用可能抛出异常的方法,因此编译器会说您要处理

public Player player(Colour colour, ScotlandYardView view, String mapFilename) {
try{
    switch (typeMap.get(colour)) {
        case AI:
            return new RandomPlayer(view, mapFilename);
        case GUI:
            return gui(view);
        default:
            return new RandomPlayer(view, mapFilename);
    }
}catch(Exception e){
e.printStackTrace();
}
}