Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / VB.NET / August 2006

Tip: Looking for answers? Try searching our database.

Are codes ran in try blocks expensive?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
stktung@yahoo.com - 25 Aug 2006 21:16 GMT
Hi,

I'm not too familiar with how exception works in .NET but I've read
from somewhere that in C++, code that are ran in try blocks are
expensive:

http://gamearchitect.net/Articles/ExceptionsAndErrorCodes.html

Is it the same for .NET? or .NET implements a Zero Overhead Exception
Handling (as mentioned in the article) that makes codes ran in the try
block essentially free?

-stung
Marina Levit [MVP] - 25 Aug 2006 21:40 GMT
I believe there is a cost associated with the, but it is very very small, as
long as no exception is thrown. If an exception is thrown, then there is a
higher cost.

This cost should not prevent you from putting try/catch blocks where
necessary. If you have performance problems in your application, it is not
because you have one too many try/catch blocks.

> Hi,
>
[quoted text clipped - 9 lines]
>
> -stung
Michel Posseth  [MCP] - 27 Aug 2006 09:31 GMT
My experience is that they are indeed expensive....

a general rule of thumb is to check for wrong values instead of writing a
try catch construct when this is possible

in all other situations use a try catch construct

hth

Michel Posseth [MCP]

>I believe there is a cost associated with the, but it is very very small,
>as long as no exception is thrown. If an exception is thrown, then there is
[quoted text clipped - 17 lines]
>>
>> -stung
Jim Wooley - 28 Aug 2006 15:11 GMT
> I believe there is a cost associated with the, but it is very very
> small, as long as no exception is thrown. If an exception is thrown,
[quoted text clipped - 3 lines]
> necessary. If you have performance problems in your application, it is
> not because you have one too many try/catch blocks.

It might not be because you have one too many Try blocks, but could be if
you have too many catch blocks. Consider the following mechanism used in
VB 8.x if you don't use the built-in IsNumeric function:

Public Shared Function IsInteger(input as object) as Boolean
  Try
     Integer.Parse(input)
  Catch
     Return False
  End Try
  Return True
End Function

What is really exceptional about this one is that internally, Integer.Parse
contained a try catch block which threw an exception as well which the framework
swallowed and re-threw. Now, if we loop through a table of 10,000 records
and call our IsInteger on a field, we will catch 20,000 exceptions just to
find out if it is indeed a number.

Luckily the framework team recognized the issue and fixed it with TryParse.
The resulting performance is drastically improved even with the amount of
byte parsing that occurs under the covers.

Jim Wooley
http://devauthority.com/blogs/jwooley/default.aspx

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.