import java.io.*;
class ex3
{
public static void main(String args[])
{
myfun();
}
static void myfun()
{
try
{
FileInputStream f = new FileInputStream("file.ytxt");
System.out.println("my fun");
}
catch(Exception e) //Line 1
{
System.out.println(e.getMessage());
}
catch(FileNotFoundException e) //Line 2
{
System.out.println("File Not Found Caught");
}
}
}
Я создал два кода обработчика исключений (один общий и другой, определенный в строках 1 и 2).Как компилятор знает об исключениях, которые необходимо выполнить перед выполнением?
Мой компилятор жалуется
ex3.java:24: error: exception FileNotFoundException has already been caught
catch(FileNotFoundException e)
^
1 error
Мой вопрос, как же компилятор знает, что «FileNotFoundException» будет сгенерировано блоком попробовать?
Потому что декларация метода (конструктора) сообщает об этом. –
Прочтите [этот пост] (http://stackoverflow.com/questions/15167899/why-does-order-matter-when-catching-exceptions/15174337#15174337) –