我有一个开关声明:
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错误。为什么这样,以及如何解决它?
答案 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();
}
}