[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

ntu-kpi.comp.programming

[q] Java: finally

kazan

3/18/2005 6:49:00 PM

ðÒÉ!
âÙÌÏ:

try{
Connection conn;
. . .
conn.close();
}catch(Exception e){}

ðÏÄÕÍÁÌÏÓØ, ÞÔÏ finally ÓÐÁÓÅÔ ÍÉÒ É ÓÔÁÌÏ:

Connection conn;
try{
conn = ...;
. . .
}catch(Exception e){}
finally{
conn.close();
}

á ÔÕÔ
- É conn ÍÏÖÅÔ ÂÙÔØ ÎÅ initialized (ÈÏÔØ ÎÁÌÏÍ ÉÎÉÃÉÁÌÉÚÉÒÕÊ ;)
- É close() ÜËÚÅÐÛÉÎ ×ÙÐÌÅ×Ù×ÁÅÔ, ËÏÔÏÒÙÅ × finally ÐÒÉÄÅÔÓÑ
ÐÅÒÅÈ×ÁÔÙ×ÁÔØ...

ïÎÏ ×ÏÏÂÝÅ ÔÏ finally ÎÁÄÏ?
þÔÏ ÇÏ×ÏÒÑÔ ÔÏ×. ûÁÂÌÏÎÙ?

óÐÁÓÉÂÏ!

--
kazan
ftp://kazan.ussr.ntu-k...
mailto:kazan@ussr.ntu-kpi.kiev.ua
eMule: 10.118.22.34:4661 kazan

9 Answers

Karim

3/18/2005 9:00:00 PM

0


"kazan" <kazan@ussr.ntu-kpi.kiev.ua> wrote in message
news:d1f7ra$26jk$1@news.ntu-kpi.kiev.ua...

>
> &#239;&#206;&#207; &#215;&#207;&#207;&#194;&#221;&#197; &#212;&#207; finally &#206;&#193;&#196;&#207;?
> &#254;&#212;&#207; &#199;&#207;&#215;&#207;&#210;&#209;&#212; &#212;&#207;&#215;. &#251;&#193;&#194;&#204;&#207;&#206;&#217;?
>

Performing cleanup
with finally
There''s often some piece of code that you want to execute whether or not an
exception is thrown within a try block. This usually pertains to some
operation other than memory recovery (since that''s taken care of by the
garbage collector). To achieve this effect, you use a finally clause[41] at
the end of all the exception handlers. The full picture of an exception
handling section is thus:

&#193; &#215;&#207;&#207;&#194;&#221;&#197; &#208;&#207;&#203;&#207;&#208;&#193;&#202; Thinking in Java, Bruce Eckel - &#230;&#201;&#204;&#207;&#211;&#207;&#198;&#201;&#209; Java - &#212;&#193;&#205;
&#210;&#193;&#218;&#207;&#194;&#210;&#193;&#206;&#207; &#205;&#206;&#207;&#199;&#207; &#201;&#206;&#212;&#197;&#210;&#197;&#211;&#206;&#217;&#200; &#205;&#207;&#205;&#197;&#206;&#212;&#207;&#215;

kazan

3/18/2005 9:13:00 PM

0

> &#193; &#215;&#207;&#207;&#194;&#221;&#197; &#208;&#207;&#203;&#207;&#208;&#193;&#202; Thinking in Java, Bruce Eckel - &#230;&#201;&#204;&#207;&#211;&#207;&#198;&#201;&#209; Java
&#252;&#212;&#207; &#212;&#193;&#203;&#201; &#194;&#201;&#194;&#204;&#201;&#209;, &#212;&#207;&#204;&#216;&#203;&#207; &#201;&#206;&#207;&#199;&#196;&#193; &#215;&#211;&#197; &#210;&#193;&#215;&#206;&#207; &#208;&#207;&#196;&#207;&#194;&#206;&#207;&#199;&#207; &#210;&#207;&#196;&#193; &#206;&#192;&#193;&#206;&#211;&#217; &#201;&#206;&#212;&#197;&#210;&#197;&#211;&#206;&#217;...

Vitischenko Alexander

3/18/2005 9:44:00 PM

0

Connection conn = null;
try {
conn.createXXX
....
} catch (Exception e) {
// handle error
} finally {
if ((conn != null) && (!conn.isClosed())) {
conn.close();
}
}

&#247;&#207;&#212; &#201; &#210;&#197;&#219;&#197;&#206;&#201;&#197; &#212;&#215;&#207;&#197;&#202; &#208;&#210;&#207;&#194;&#204;&#197;&#205;&#217;.

----------

finally &#196;&#197;&#202;&#211;&#212;&#215;&#201;&#212;&#197;&#204;&#216;&#206;&#207; &#206;&#213;&#214;&#197;&#206;.

&#253;&#193;&#211; &#196;&#193;&#214;&#197; &#194;&#217;&#211;&#212;&#210;&#197;&#206;&#216;&#203;&#207; &#206;&#193;&#195;&#193;&#210;&#193;&#208;&#193;&#192; &#208;&#207;&#222;&#197;&#205;&#213;.

&#240;&#207;&#211;&#205;&#207;&#212;&#210;&#201; &#211;&#215;&#207;&#202; &#203;&#207;&#196; &#215; &#208;&#197;&#210;&#215;&#207;&#205; &#208;&#207;&#211;&#212;&#197; :

try{
Connection conn;
. . .
conn.close();
}catch(Exception e) {
// handle error
}

&#215; &#206;&#197;&#205; &#197;&#211;&#212;&#216; &#208;&#207;&#212;&#197;&#206;&#195;&#201;&#193;&#204;&#216;&#206;&#217;&#202; &#194;&#193;&#199; :), &#197;&#211;&#204;&#201; &#215;&#207; &#215;&#210;&#197;&#205;&#209; &#201;&#211;&#208;&#207;&#204;&#206;&#197;&#206;&#201;&#209; &#203;&#207;&#205;&#205;&#193;&#206;&#196; ". . .",
&#208;&#210;&#207;&#201;&#218;&#207;&#202;&#196;&#197;&#212; &#207;&#219;&#201;&#194;&#203;&#193;, &#212;&#207; connection &#212;&#193;&#203; &#201; &#206;&#197; &#194;&#213;&#196;&#197;&#212; &#218;&#193;&#203;&#210;&#217;&#212;, &#201; &#197;&#211;&#204;&#201; &#196;&#193;&#206;&#206;&#193;&#209;
&#211;&#201;&#212;&#213;&#193;&#195;&#201;&#209; &#194;&#213;&#196;&#197;&#212; &#208;&#207;&#215;&#212;&#207;&#210;&#209;&#212;&#216;&#211;&#209; &#196;&#207;&#211;&#212;&#193;&#212;&#207;&#222;&#206;&#207; &#222;&#193;&#211;&#212;&#207;, &#212;&#207; &#210;&#193;&#206;&#207; &#201;&#204;&#201; &#208;&#207;&#218;&#196;&#206;&#207; &#220;&#212;&#207; &#205;&#207;&#214;&#197;&#212;
&#208;&#210;&#201;&#215;&#197;&#211;&#212;&#201; &#203; &#212;&#207;&#205;&#213;, &#222;&#212;&#207; &#206;&#207;&#215;&#217;&#197; connection &#206;&#197; &#211;&#205;&#207;&#199;&#213; &#194;&#217;&#212;&#216; &#207;&#212;&#203;&#210;&#217;&#212;&#217;, &#201; &#215; &#212;&#215;&#207;&#197;
&#208;&#210;&#201;&#204;&#207;&#214;&#197;&#206;&#201;&#197;, &#206;&#193;&#208;&#210;&#201;&#205;&#197;&#210;, &#218;&#193;&#203;&#210;&#193;&#196;&#197;&#212;&#211;&#209; &#218;&#204;&#207;&#194;&#206;&#217;&#202; DoS :).

&#254;&#212;&#207;&#194;&#217; &#220;&#212;&#207;&#199;&#207; &#201;&#218;&#194;&#197;&#214;&#193;&#212;&#216; &#206;&#193;&#196;&#207; &#208;&#201;&#211;&#193;&#212;&#216;:

Connection conn = null;
try {
. . .
conn.close(); [*]
} catch(Exception e){
// handle error
}
if ((conn != null) && (!conn.isClosed())) {
conn.close(); [*]
}

&#247;&#210;&#207;&#196;&#197; &#215;&#211;&#197; &#207;&#203;... &#206;&#207; &#211;&#212;&#210;&#207;&#203;&#201; &#208;&#207;&#205;&#197;&#222;&#197;&#206;&#206;&#217;&#197; [*], &#196;&#213;&#194;&#204;&#201;&#210;&#213;&#192;&#212;&#216;&#211;&#209;... &#220;&#212;&#207; &#206;&#197;&#203;&#210;&#193;&#211;&#201;&#215;&#207;,
&#213;&#222;&#201;&#212;&#217;&#215;&#193;&#209; &#222;&#212;&#207; &#197;&#211;&#212;&#216; &#203;&#207;&#206;&#211;&#212;&#210;&#213;&#203;&#195;&#201;&#201; &#208;&#207;&#218;&#215;&#207;&#204;&#209;&#192;&#221;&#201;&#197; &#211;&#196;&#197;&#204;&#193;&#212;&#216; &#220;&#212;&#207; &#194;&#207;&#204;&#197;&#197; &#199;&#210;&#193;&#205;&#207;&#212;&#206;&#207;,
&#206;&#193;&#208;&#210;&#201;&#205;&#197;&#210; &#201;&#211;&#208;&#207;&#204;&#216;&#218;&#213;&#209; finally { . . . } - &#194;&#204;&#207;&#203; &#203;&#207;&#212;&#207;&#210;&#217;&#202; &#215;&#211;&#197;&#199;&#196;&#193; &#215;&#217;&#218;&#217;&#215;&#193;&#197;&#212;&#216;&#211;&#209; &#208;&#207;&#211;&#204;&#197;
&#201;&#211;&#208;&#207;&#204;&#206;&#197;&#206;&#201;&#209; &#213;&#203;&#193;&#218;&#193;&#206;&#206;&#207;&#199;&#207; &#213;&#222;&#193;&#211;&#212;&#203;&#193; &#203;&#207;&#196;&#193;.

&#252;&#212;&#207; &#205;&#207;&#214;&#197;&#212; &#215;&#217;&#199;&#204;&#209;&#196;&#197;&#212;&#216; &#206;&#193;&#208;&#210;&#201;&#205;&#197;&#210; &#212;&#193;&#203; :

Connection conn = null;
try {
. . .
} catch(Exception e){
// handle error
} finally {
if ((conn != null) && (!conn.isClosed())) {
conn.close(); [*]
}
}




> &#254;&#212;&#207; &#199;&#207;&#215;&#207;&#210;&#209;&#212; &#212;&#207;&#215;. &#251;&#193;&#194;&#204;&#207;&#206;&#217;?
&#206;&#201;&#222;&#197;&#199;&#207; &#206;&#197; &#199;&#207;&#215;&#207;&#210;&#209;&#212; :)

---
WBR VID.

kazan

3/18/2005 10:37:00 PM

0

> finally {
> if ((conn != null) && (!conn.isClosed())) {
> conn.close();
> }
> }

&#225; &#203;&#193;&#203; &#214;&#197; &#215;&#211;&#197;-&#212;&#193;&#203;&#201; &#194;&#217;&#212;&#216; &#211; SQLException &#203;&#207;&#212;&#207;&#210;&#207;&#197; &#215;&#217;&#203;&#201;&#196;&#193;&#197;&#212; Connection.close() ?
&#233;&#205;&#197;&#206;&#206;&#207; &#220;&#212;&#207; &#205;&#197;&#206;&#209; &#201; &#201;&#206;&#212;&#197;&#210;&#197;&#211;&#207;&#215;&#193;&#204;&#207;: &#207;&#210;&#199;&#193;&#206;&#201;&#218;&#207;&#215;&#217;&#215;&#193;&#212;&#216; &#197;&#221;&#197; &#207;&#196;&#201;&#206; &#194;&#204;&#207;&#203; try-catch &#215;
finally, &#201;&#204;&#201; &#214;&#197; &#204;&#207;&#215;&#201;&#212;&#216; &#201; &#207;&#194;&#210;&#193;&#194;&#193;&#212;&#217;&#215;&#193;&#212;&#216; &#201;&#211;&#203;&#204;&#192;&#222;&#197;&#206;&#201;&#209; &#215; catch &#215;&#197;&#210;&#200;&#206;&#197;&#199;&#207; &#213;&#210;&#207;&#215;&#206;&#209;
(&#210;&#193;&#218;&#213;&#205;&#197;&#197;&#212;&#211;&#209;, &#211;&#207; &#215;&#211;&#197;&#205;&#201; &#206;&#197;&#207;&#194;&#200;&#207;&#196;&#201;&#205;&#217;&#205;&#201; &#208;&#210;&#207;&#215;&#197;&#210;&#203;&#193;&#205;&#201;, &#203;&#193;&#203; "(conn != null) &&
(!conn.isClosed())" )

&#243;&#208;&#193;&#211;&#201;&#194;&#207;!

--
kazan
ftp://kazan.ussr.ntu-k...
mailto:kazan@ussr.ntu-kpi.kiev.ua
eMule: 10.118.22.34:4661 kazan

Aleksey Salow

3/19/2005 9:15:00 AM

0

kazan (Fri, 18 Mar 2005 18:49:15 +0000 (UTC)) ?EOAI
> iII ?IIAYA OI finally IAAI?
> ?OI CI?IONO OI?. uAAIIIU?

OAIII OU ? ?ICOIIIEOI?AIEA ?OEUAI. &#247; AAOOAA AYA IOOII.

eAE ?EUAI _eioiuee_ EIA

Initialization(Vars);
try
Use(Vars);
finally
Finalization(Vars)
end;

oAI IU IIOAO IAAO?A?EOO EIOOAEOIIA IO?IAIOAAIEA OAOOOOI? E IOOOOOO?EA
memleak-EI?.

iA?OEIAO EIA:
Lock.Acquire;
SomeCriticalSection();
Lock.Release;

OI?AOUAIII IAEIOAEOAI, EAI AOIE ? SomeCriticalSection OOAEUEOON
exception, OI IIE IOOAIAOON UAINO E CAA-OI IU IAO?AION IA deadlock.
?OA?EIOIAE ?OACI IA?EOAOO:
Lock.Acquire;
try
SomeCriticalSection();
finally
Lock.Release;
end;

&#247; UOII OIO?AA IIE AOAAO ?OACAA OINO IAUA?EOEII IO ?ICIAU IA IAOOA.

--
Woody [woody@woodpecker.org.ua] [aleksey.salow@gmail.com] [ICQ 77180916]
() ascii ribbon campaign - against html mail
/\ [http://ar...] - against microsoft attachments

kazan

3/19/2005 2:51:00 PM

0

> &#247; &#196;&#197;&#212;&#211;&#193;&#196; &#197;&#221;&#197; &#206;&#213;&#214;&#206;&#207;.
&#235;&#193;&#203;&#207;&#202; &#208;&#207;&#211;&#207;&#215;&#197;&#212;&#213;&#197;&#212;&#197;?

> Initialization(Vars);
> try
> Use(Vars);
> finally
> Finalization(Vars)
> end;

&#238;&#213; &#215;&#207;&#212; &#201; &#219;&#193;&#194;&#204;&#207;&#206; &#212;&#193;&#203;&#201; &#206;&#193;&#219;&#197;&#204;&#211;&#209; ;)
&#243;&#208;&#193;&#211;&#201;&#194;&#207;!

Chapaev

3/22/2005 7:00:00 AM

0

> &#225; &#212;&#213;&#212;
> - &#201; conn &#205;&#207;&#214;&#197;&#212; &#194;&#217;&#212;&#216; &#206;&#197; initialized (&#200;&#207;&#212;&#216; &#206;&#193;&#204;&#207;&#205; &#201;&#206;&#201;&#195;&#201;&#193;&#204;&#201;&#218;&#201;&#210;&#213;&#202; ;)
> - &#201; close() &#220;&#203;&#218;&#197;&#208;&#219;&#201;&#206; &#215;&#217;&#208;&#204;&#197;&#215;&#217;&#215;&#193;&#197;&#212;, &#203;&#207;&#212;&#207;&#210;&#217;&#197; &#215; finally &#208;&#210;&#201;&#196;&#197;&#212;&#211;&#209;
> &#208;&#197;&#210;&#197;&#200;&#215;&#193;&#212;&#217;&#215;&#193;&#212;&#216;...
&#225; &#206;&#193; &#203;&#207;&#202; &#212;&#217; &#203;&#204;&#207;&#213;&#218; &#218;&#193;&#211;&#213;&#206;&#213;&#204; &#215; finally?

Aleksey Salow

3/22/2005 7:56:00 AM

0

kazan (Sat, 19 Mar 2005 14:50:50 +0000 (UTC)) ?EOAI
>> &#247; AAOOAA AYA IOOII.
> eAEIE ?IOI?AOOAOA?

aAOOAA "oIIAUEA". oAI OOAA EIOO ;)

>> Initialization(Vars);
>> try
>> Use(Vars);
>> finally
>> Finalization(Vars)
>> end;
>
> iO ?IO E UAAIII OAEE IAUAION ;)
> o?AOEAI!

uOI IA UAAIII, UOI IAII EU ?OA?EI.

--
Woody [woody@woodpecker.org.ua] [aleksey.salow@gmail.com] [ICQ 77180916]
() ascii ribbon campaign - against html mail
/\ [http://ar...] - against microsoft attachments

kazan

3/22/2005 9:13:00 AM

0

> &#225; &#206;&#193; &#203;&#207;&#202; &#212;&#217; &#203;&#204;&#207;&#213;&#218; &#218;&#193;&#211;&#213;&#206;&#213;&#204; &#215; finally?
&#240;&#206;&#193;&#206;&#209;, &#212;.&#197;. &#207;&#212;&#215;&#197;&#212; -- "&#206;&#197;&#212;, &#206;&#197; &#206;&#193;&#196;&#207;" :)