HAVIT Knowledge Base

Vývoj webových aplikací, .NET, SQL, návrh
Welcome to HAVIT Knowledge Base Sign in | Join | Help
-
Home Články Forums Obrázky Soubory

.NET Framework

Microsoft .NET Framework, Base Class Library

Programátorská hádanka - catch & throw

Jaký je rozdíl v prapagaci výjimky z bloku catch:

try
{
...
}
catch (Exception e)
{
   throw;
}

versus

try
{
...
}
catch (Exception e)
{
   throw e;
}

Odpověď je tentokrát jednoduchá a jako obvykle ji najdete o řádku níže napsanou bílým písmem (pro odtajnění třeba označte):

>>>  Při vyhození výjimkt přes "throw;" se nezmění stack trace - výjimka se stále tváří, že vzešla z původní metody. Při vyhození přes "throw e;" je změněn stack trace, výjimka se tváří, že vzešla z naší metody obsluhující výjimku.    <<<

 

Published 27. června 2007 18:31 by Jiří Kanda

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

 

Jarda Jirava said:

Když už jsme u těch hádanek. měl bych k tomuto tématu také jednu.

Je možné zjistit, zda k vyhození výjimky došlo ve finally bloku?

-- J.

června 28, 2007 9:31
 

JB said:

června 28, 2007 14:05
 

p. said:

jde o bug MS, ale temer zanedbatelny.

u NET35 a VS2008 je StackTrace zmenen pouze v prvnim radku a to tak nepodstatne, ze je pouze zmeneno cislo radku chyby.

Tzke je temer jedno, jak to programator zapise.

Nicmene MS by to mohl opravit.

února 23, 2008 15:50

What do you think?

(required) 
(optional)
(required) 
Enter the code you see below

Submit