JLS 8, 14.20:Почему я не могу избежать исключения более одного раза?
попытка оператор выполняет блок. Если значение выбрано, и в заявлении try есть одно или несколько положений catch, которые могут его поймать, тогда управление будет передано на в первый такой пункт catch.
Похоже, что у меня могут быть, например, два предложения catch для одного и того же типа исключения. Но когда я попробую это, я получу ошибку времени компиляции.
public static void main (String[] args) throws java.lang.Exception
{
try{
} catch(RuntimeException ioe){
} catch(NumberFormatException e){ //Already caught
}
}
Не могли бы вы объяснить это с помощью JLS?
У вас может быть два, но «Это ошибка времени компиляции, если объединение типов содержит две альтернативы Di и Dj (i ≠ j), где Di является подтипом Dj (§4.10.2).». Если вам нужно, поместите try-catch (NFE) и переверните его, и вокруг него появится try-catch (RE) – Philipp
. В чем смысл одного и того же исключения более одного раза в одном и том же заявлении try? Ошибка компиляции довольно понятна в этом 'unreachable catch block ...'. – A4L
@Philipp У меня здесь есть союз типа? –