Catch Exceptions In Finally Block?
Oct 13, 2010Is there some special way to catch exceptions in finally block ?
View 2 RepliesIs there some special way to catch exceptions in finally block ?
View 2 RepliesI have a SqlDataReader and I want to trap any exceptions with Try Catch Finally if the reader =cmd.ExecuteReader() statement fails. If this statement throws an exception do I need to close the reader? If so, where. Wherever I place the reader.close() statement I get an error that the reader has not been assigned a value yet.
View 2 RepliesI wonder how to use statement handles exceptions?Do I need to wrap the using statements with a Try/Cath/Finally clause in order to be sure that the SqlConnection object is closed and disposed even if the containing code throws an exception? [code]
View 3 RepliesThis is a followup question to this Should I stick with the Try/Catch/Finally construct, or go with the Using construct? Sample Code for Try/Catch/Finally:
[Code]...
I understand how try-catch works and how try-finally works, but I find myself using those (usually) in two completely different scenarios:
try-finally (or using in C# and VB) is mostly used around some medium-sized code block that uses some resource that needs to be disposed properly.
try-catch is mostly used either
around a single statement that can fail in a very specific way or (as a catch-all) at a very high level of the application, usually directly below some user interface action.
In my experience, cases where a try-catch-finally would be appropriate, i.e., where the block in which I want to catch some particular exception is exactly the same block in which I use some disposable resource, are extremely rare. Yet, the language designers of C#, VB and Java seem to consider this to be a highly common scenario; the VB designers even think about adding catch to using.
Or am I just overly pedantic with my restrictive use of try-catch?
EDIT: To clarify: My code usually looks like this (functions unrolled for clarity):
Try
do something
Aquire Resource (e.g. get DB connection)
Try
[Code]....
which just seems to make much more sense than putting any of the two catches on the same level as finally just to avoid indentation.
If I throw an exception from within a catch, does the finally (from the catch) still execute? i.e.
Try
..some code with an exception in it...
catch ex as Exception
throw new SpecialException("blah blah" & ex.Message, ex)
[code]....
how to use them then before, but am still a little confused with a few aspects. Here goes:
1.) Lets say you have a method that checks for a certain condition(s) and if it fails Throws an exception. Does it have to be in a try/catch block? Meaning can the "Throw" statement exist in a block with no try/catch statement?
2.) Now lets say we have a method that has a try catch block and in it there is a throw statement. When the throw statement is executed does it first try to find an appropriate catch block in the same method or does it immediately go back to the calling method without looking at the catch statements in the current method where the exception was thrown?
3.) I created a custom exception class that inherits from ApplicationException. Next I created a method which has a catch block that catches this type of exception and does some action. Is the System(i.e CLR) smart enough to throw an exception of this type, or does it only throw exceptions from SystemException?
4.) I know that some people are more liberal in their use of exceptions and others use it more sparingly when truly strange stuff happen like the DB going down. I am writing code where I am getting some info back from the database, converting it and then storing it. Sometimes there might be data that comes back from the database and other times the field is empty and the Null value comes back. Therefore in the instances where Null comes back from the database I should not convert the value to anything, since I will get an error. What should I do in this situation? Should I let the CLR throw the exception when it goes to convert the Null value or should I check for the Null value and if it exists not convert?
5.) In general when I throw exceptions, is it sensible to only throw exceptions of the type Application Exception or are there instances where the programmer throws exceptions of the type SystemException?
OK, I'd like to know the difference between the following two blocks of code:
Block A
Try
Something
[code].....
I often use the Try block to catch exeptions, and I have read in the help pages to do with the Finally statement. But, from what I understand it has no use whatsoever. Why would I use Finally instead of just ending the Try block. For example, from what I know
[Code]...
I need to catch log4net exceptions (its own exceptions not app exceptions logged by it). I wish there's a way of doing it this way: [code] I have this code implemented and there's no errors in compilation but i force log4net to have an error (pointing to a non existing database in the config file) and nothing is threw.I've tried the listener aproach: [code] and it's writing the errors to log4net.txt, the forced ones i mean.This last aproach has a couple of drawbacks: it won't append every error to the file, if the error is the same it doesn't write it, i can't get the listener to write every error to that file, only one (I don't know how to fully configure the trace listener, it might be that). Thus it won't append the date and hour to every line wich is a necesity for me. Finally i can't give structure to it (xml). Even if the listener work i need to use the try/catch aproach, since i'm using ExceptionHandling from Enterprise library to log the errors in my app.
View 1 RepliesSometimes I do this and I've seen others doing it too:
VB:
Try
DontWannaCatchIt()
[code].....
In this VB.NET code:
Dim o as SomeClass
Try
o = new SomeClass
'call some method on o here
Catch(...)
Why is there a need to set o to Nothing? What if i don't set it to Nothing in the Finally block? What i think is that it is OK if you don't set it to Nothing because the object will be marked for GC.
I have a (begginner) question on VB.NET. Is this good code (I mean, is it "bullet proof")?. It seems to work, but I understand the Return is executed AFTER the Finally. So how does it call a method on an allready disposed of object?
[Code]...
I've a class with a timer inside
Private tt As New System.Timers.Timer()
This timer is enabled in the New() of the class
Try
[code].....
i want to know how to use try catch finally statement.i want to catch this error Violation of PRIMARY KEY constraint 'XPKemployee'. Cannot insert duplicate key in object 'dbo.employee'.
View 4 Repliesi have this problem about the try,catch,finally statement... i don't know how to use it..i have my converter program here and this should be type by a letter 'cause if you do it will go lag or hang...i try VERIFY button to make sure if it's a letter or number but my teacher said it's not counted...
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If ComboBox1.Text = "Pounds To Kilo" Then
[code]....
Suppose in VB.NET you have:
Try
Debug.Print("Trying...")
Catch ex as Exception
throw new Exception("Exception", ex)
Finally
Debug.Print("Finally...")
End Try
How would you write this using the "On Error Goto" construct? (please no questions asking why I would want to do this, just curious if it can be done).
Well, I've read (and learned) that the finally block doesn't always execute its code (even apart from pulling the plug).FYI For more information, see try catch finally question
[Code]...
In Finally Block, How can we check if an exception occurred or Not.I am programming in VB.Net. Why i am asking is that in the Finally Block there could be some things you would like to do if an Exception has occured and some things you want to do if an exception has not occured. So, within finally block how do we know if an exception has occured
View 11 Repliesdoes any one know the reason of why I get Warning in the Finally block in vb.
[Code]...
I am Not using the "Catch Ex as Exception" for some of my application's architect details.So, if my code is something like
Try
'code here
Catch ex As ApplicationException '!!! i.e. ApplicationException
[code]....
I am handling errors via my global.asax in this method:
Dim CurrentException As Exception
CurrentException = Server.GetLastError()
Dim LogFilePath As String = Server.MapPath("~/Error/" & DateTime.Now.ToString("dd-MM-yy.HH.mm") & ".txt")
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter(LogFilePath)
[code]....
In my code I currently have no other error handling. Should I still insert try, catch, finally blocks?
When you use Try Catch for Exceptions, will
Catch ex As Exception
Catch any possible error that could occur or do you have to catch each exception separately?
Is there a way to catch these Exceptions? (I am not looking for "just put try/catch or on error goto around them"). I am trying to find out if these errors can be caught by something outside of them.[code]...
View 1 RepliesIs there a way to catch all SQL exceptions in a project? I have several gridviews and multiple sqldatasources and most of the errors are going to occur when a user enters something incorrectly or in the wrong column. So how do I stop the Server Error in /Project page from showing up?
View 3 RepliesI am working on an app that uses a third-party charting component.It is a .Net component. There have been some occasions when exceptions have occurred inside the third-party component code, but my try/catch is not trapping them.Should they get trapped?My code is structured roughly like this:[code]I have since found and fixed what was causing the exceptions, but I would have thought that this should trap them. What happens when I run in the IDE is that it crashes and Visual Studio throws up a page telling me there is no code available to debug, and no disassembly available.Fair enough, but I repeat - why doesn't the exception get trapped?
View 4 RepliesIs there anything similar to the MyApplication_UnhandledException for an user control in VB?
I would like to have a central point where to catch all unhandled exceptions of a user control, without propagating the exception to the application that uses the user control. I made some test raising an exception in a method of my user control where there is no try/catch code (of course in the true project all methods have a try/catch block). The exception was caught by MyApplication_UnhandledException event of the application using the user control. But this is too "far" from the point where the exception happens and in worst case the user should restart the application.
I would like to realize a behaviour for the user control in order that if the user control fails, the exception is not propagated till the application, but just caught at user control level.
A few weeks back in reply to a thread, I said then that it's sometimes worse to use a Try/Catch when there's nothing in the Catch!There are exceptions to that I'm sure, but too often the Try/Catch is used with a blank Catch that makes even the developer scratch their heads when the program crashes because they have nothing to go on (by their own doing).DevExpress (and I'm a big fan of their stuff) has a little three minute video that encapsulates that concept well and I thought that you all might enjoy watching it:[URL]
View 1 Replies[Code]...
Notice the catch (Type) instead of catch (Type myVariable). Is this possible with VB.NET, or do you always have to declare a variable when you catch exception types, like so:
[Code]...
so i have a Method that is going to made Thread Safe. can i have something like this in the Method:
Public Class Q Private Shared ASD As New MyException("") Public Sub W Throw ASD if multiple threads attempt to throw the Shared exception ASD, will there be an error in the catching part? The alternative of course is to: Throw New ASD but i'm just checking to see if the first way is thread safe