Co się stanie, jeśli zarówno catch, jak i w końcu bloki rzucą wyjątek?

Co się stanie, jeśli zarówno catch, jak i ostatecznie blocks rzucą wyjątek?

Author: Mark Hurd, 2009-09-27

5 answers

Gdy finally blok rzuca wyjątek, skutecznie ukryje wyjątek wyrzucony z catch bloku i będzie tym, który zostanie ostatecznie wyrzucony. Dlatego ważne jest, aby albo rejestrować wyjątki po złapaniu, albo upewnić się, że blok finally sam nie wyrzuci wyjątku, w przeciwnym razie możesz uzyskać wyjątki, które są tłumione i nigdy nie widziane.

 32
Author: adrianbanks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-26 23:32:50

Gdy catch rzuca wyjątek, w końcu zostanie uruchomiony blok, a następnie zakończy się z wyjątkiem. Jeśli blok finally wyrzuci wyjątek, blok zakończy się z wyjątkiem.

 6
Author: NawaMan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-26 23:26:29

Ostatni wyrzucony wyjątek jest wyrzucany.

 4
Author: Tom Hawtin - tackline,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-26 23:25:45

Its już odpowiedział dobrze przez adrianbanks, ale poniższy post powinien być ciekawy: ciekawe wyniki WYJĄTKÓW: wyrzucenie WYJĄTKÓW z bloku Finally

 4
Author: chrisb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-26 23:34:29

Cześć Nwaman myślę, że odpowiadasz źle Przetestowałem go w aplikacji windows, znalazłem, jeśli u napisać program taki jak poniżej

try
{
    string s = "hu";
    int i = int.Parse(s);
}
catch (Exception ex)
{
    string s = "hu";
    int i = int.Parse(s);
    throw new Exception();
}
finally
{
    MessageBox.Show("hi");
}

I to nie spowoduje ostatecznie wykluczenia,

 -4
Author: sunil shetty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-22 09:57:57