Sens finally

0

Jaki jest sens używania finally?

Co za różnica? To:

try
{
   // cos niebezpiecznego
}
catch (Exception e)
{
   // reaguje
}
finally
{
   // cos robi
}

czy to:

try
{
   // cos niebezpiecznego
}
catch (Exception e)
{
   // reaguje
}

   // cos robi
0

Dla mnie tylko wizualna. No i porządkuje kod, chociaż metoda działania obu fragmentów jest ta sama.

0

Moim zdaniem jest różnica. Jeśli żaden catch nie obsłuży wyjątku, to kod w bloku finally się wykona.

0

Dowód, że jest różnica:

public class A
{
    public static void main(String[] args)
    {
        int[] a={1,2};
        try
        {
            a[0]=3/0;
        }
        catch(IndexOutOfBoundsException e)
        {
            System.out.println("Poza zakresem");
        }
        finally
        {
            System.out.println("W finally");
        }
        System.out.println("Poza finally");
    }
}

W finally
Exception in thread "main" java.lang.Arithmetic Exception ...

0

@QuestionTag, sensu nie ma. Ale przydaje się gdy chcesz posprzątać, drażnią cię wycieki pamięci lub blokady na zasobach (pliki, połączenia z bazą). Finally używasz wszędzie tam gdzie niezależnie od wyniku wykonania kodu należy odblokować zasoby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1