Вот код, демонстрирующий мою точку зрения (java):
public static int getSize(List<String> list)
{
System.out.println("begin");
try
{
System.out.println("get list size");
return list.size();
}
catch (Exception e)
{
System.err.println("exception");
}
finally
{
System.out.println("finally");
return -1;
}
}
public static void main(String[] args)
{
List<String> list = null;
int size = getSize(list);
System.out.println("list size: " + size);
}
Я ожидал вывода:
begin
get list size
exception
finally
list size: -1
вместо этого я получаю другие вещи, а также тот, что выше... например, исключение может отображаться до получения размера списка и после исключения...
e.g.
begin exception get list size finally list size: -1
и
begin get list size finally exception list size: -1
Почему оно это делает? Каков правильный вывод?