2015-04-29 2 views
-1

У меня есть переключатель заявление:Почему мой коммутатор оператор генерирует 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. Почему это и как я это исправить?

+0

Пожалуйста, выделите строку, в которой вы получите эту ошибку. – CKing

+6

С помощью этого кода невозможно сказать; что делает метод 'gui()'? Создает ли конструктор «RandomPlayer» исключение IOException? – fge

ответ

-1

Использование попробовать catch.You используют метод, который может бросить некоторые исключения, так компилятор говорит вам справиться с этим

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(); 
} 
} 
+1

Не отвечает «почему» части quesiton. – CKing

+0

По-прежнему не объясняет 'почему'' IOException' – CKing

+0

@ChetanKinger Я четко сказал: 'Вы используете метод, который может вызвать какое-то исключение, поэтому компилятор говорит вам обращаться с этим' – codegasmer

0

Ну, дайте мне хотя бы ответить, почему-часть, в дополнение к ответу codegasmer в: это просто потому, что любой из методов, которые вы вызываете, вызывает исключение IOException. Это может быть typeMap.get() (чего я бы не ожидал в этом случае, но возможно три варианта), метод gui или конструктор RandomPlayer.

codegasmer показывает способ идентификации, какой из этих методов отвечает, вы увидите его в трассировке стека - и даже обнаружите, в каком из методов был вызван метод, называемый исключением.

Если вы можете жить, просто перехватывая исключение и предоставляя резервное решение, вы можете сделать это (например, создав резервный объект в блоке catch). Лучше узнать, какова была исходная причина исключения, а затем, если это возможно, избежать этого. Использование отладчика может очень помочь здесь. Поскольку я не знаю каких-либо деталей участвующих классов, я не могу оказать здесь никакой дополнительной помощи.

Смежные вопросы