Fórumok
Sziasztok!
Ha van egy ilyen felépítésű kivétel kezelésem, akkor ugye a "finally" rész abban az esetben kapja meg a vezérlést, ha a "try" blokk rendesen végrehajtódott. Tehát, ha nem volt kivétel.
try {
....
}
catch (...) {
...
}
finally {
...
}
Az a kérdés, hogy jól értelmezem-e, vagy sem. Ha nem, mi a pontos magyarázat?
Hozzászólások
minden esetben
ha az kéne hogy amikor a try lefutott, akkor simán beírnád a try végére nem? :)
A finally-nak pont az szokott az értelme lenni, hogy minden esetben lefut, azaz a try { } blokkban akár keletkezik kivétel, akár anélkül fut le. És a kivételkezelő kód után fut le:
Ha a catch block továbbdobná a kivételt, de a finallyban van egy return kifejezés, akkor az utóbbi érvényesül.
--
The Net is indeed vast and infinite...
http://gablog.eu
Nem, annak semmi értelme nem lenne, ha úgy lenne, mert akkor simán a try blokk végére írva azt a részt ugyan azt az eredményt kapnád.
Szóval a finally minden esetben lefut, akkor is, hogy a try blokk végigfutott, és akkor is ha elkapott egy kivételt, sőt még akkor is, ha a catch blokkból tovább dobsz egy kivételt, vagy ha return van benne.
A ‘finally’ ág akkor is végrehajtódik, ha a try szakaszban Exception dobódik fel, és akkor is, ha nem. A ‘finally’ nem szedi le a hibát, a hiba attól feldobva marad, a finally blokkból kilépve újra érvényre jut, és visszatér a hívás helyére.
Nekünk ezt tanították.
Apple MacBook C2D 2.2Ghz 2x1G Intel X3100
Köszönöm a magyarázatokat! Most már világos.
Jó, hogy megkérdeztem, mert különben félremagyaráztam volna a programot.
amugy ez milyen nyelven kellene mukodjon? elsore azt hittem hogy c++, de finally kulcsszorol se a g++, se az ISO/IEC 14882 (jelenleg ervenyes c++ szabvany) nem tud.
C# -ban tuti. :)
http://www.oreillynet.com/pub/a/network/2003/05/05/cpluspocketref.html
"In addition to catch blocks, Java allows a finally block to be defined. finally does not exist in C++."
Mertugye a C# alapjául a Java és C++ szolgált.
Apple MacBook C2D 2.2Ghz 2x1G Intel X3100
Talált, süllyedt!
Egyébként van egy Visual C++ könyvem, ami egy táblázatban a "finally" kulcsszót is felsorolja. De a könyvben egyetlen példát nem találtam, ahol azt használná.
Stroustrup könyvében a tárgymutató részben is megtaláltam. Az adott oldalt, amire hivatkozik, végigolvastam, de nem fedeztem fel a kulcsszót.