Best approach to use try catch finally
-
Hi, I created a class library and wrote a function with the try {} catch { throw ;} finally {} manner. However I am not doing anything in the catch block, only throwing the exception. I am handling the exception the UI layer which is using that class library. I want to know the best approach to write the try block. If I use only try {} finally {} without catch block, does it good ?:confused:
Pankaj
-
Hi, I created a class library and wrote a function with the try {} catch { throw ;} finally {} manner. However I am not doing anything in the catch block, only throwing the exception. I am handling the exception the UI layer which is using that class library. I want to know the best approach to write the try block. If I use only try {} finally {} without catch block, does it good ?:confused:
Pankaj
-
Are you even allowed to skip catch? I dont think so. If the method calling the Class library method handles the exceptions(even for the class library methods), you can avoid try-catch block in the class library method.
I can not avoid the try catch finally in my class library. Because I am doing file operation in the class library, that's why I have to open and working on the files and in the finally block I am closing the writer/reader/file.
Pankaj
-
Hi, I created a class library and wrote a function with the try {} catch { throw ;} finally {} manner. However I am not doing anything in the catch block, only throwing the exception. I am handling the exception the UI layer which is using that class library. I want to know the best approach to write the try block. If I use only try {} finally {} without catch block, does it good ?:confused:
Pankaj
Hi, From the C# 2.0 standard: There are three possible forms of try statements: • A try block followed by one or more catch blocks. • A try block followed by a finally block. • A try block followed by one or more catch blocks followed by a finally block. Alan.
-
Hi, I created a class library and wrote a function with the try {} catch { throw ;} finally {} manner. However I am not doing anything in the catch block, only throwing the exception. I am handling the exception the UI layer which is using that class library. I want to know the best approach to write the try block. If I use only try {} finally {} without catch block, does it good ?:confused:
Pankaj
You can use try/finally without the catch, but you have to think about why you are doing this. As you're not catching exceptions at the level that they are being thrown, you are storing up a lot of work for the higher levels. By this, I mean that you could catch the exception and do something meaningful with it, rather than relying on the UI reporting that there was an error. For instance, we have a library that catches an error where the SqlConnection has become unavailable, and (in the appropriate catch), reconnects the SqlConnection before it attempts to process the SQL again.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
You can use try/finally without the catch, but you have to think about why you are doing this. As you're not catching exceptions at the level that they are being thrown, you are storing up a lot of work for the higher levels. By this, I mean that you could catch the exception and do something meaningful with it, rather than relying on the UI reporting that there was an error. For instance, we have a library that catches an error where the SqlConnection has become unavailable, and (in the appropriate catch), reconnects the SqlConnection before it attempts to process the SQL again.
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
I do not want to use the try catch finally in the class library, however I am doing file operations in the class library. I open/read/write the file with the stream reader/writer object and have to close that reader/writer in the finally block. If any error occurs during the read/write operation then reader must be close, that's why I have to use the finally block to close the reader. Here is the code public string ReadXmlNodeValue(string fileName, string xmlPath) { string retValue = ""; StreamReader sr = null; XmlDocument doc = new XmlDocument(); try { sr = new StreamReader(fileName, Encoding.UTF8); doc.Load(sr); XmlNode element = doc.SelectSingleNode(xmlPath); retValue = element.InnerText; } catch { throw; } finally { sr.Close(); sr = null; doc = null; } return retValue; } Can I write the above code without try catch finally block and it will close the reader if any error is generated during the process ?
Pankaj
-
I do not want to use the try catch finally in the class library, however I am doing file operations in the class library. I open/read/write the file with the stream reader/writer object and have to close that reader/writer in the finally block. If any error occurs during the read/write operation then reader must be close, that's why I have to use the finally block to close the reader. Here is the code public string ReadXmlNodeValue(string fileName, string xmlPath) { string retValue = ""; StreamReader sr = null; XmlDocument doc = new XmlDocument(); try { sr = new StreamReader(fileName, Encoding.UTF8); doc.Load(sr); XmlNode element = doc.SelectSingleNode(xmlPath); retValue = element.InnerText; } catch { throw; } finally { sr.Close(); sr = null; doc = null; } return retValue; } Can I write the above code without try catch finally block and it will close the reader if any error is generated during the process ?
Pankaj
Pankaj Saha wrote:
Can I write the above code without try catch finally block and it will close the reader if any error is generated during the process ?
If you mean, can you dispense with try/finally as well, then you should not. The finally portion will close the reader, regardless as to whether or not an exception is thrown. As StreamReader is a disposable object though, you could always rewrite this with:
using(StreamReader sr = new StreamReader(fileName, Encoding.UTF8))
{
// Do the file stuff.
}When StreamReader is disposed the stream is closed (if it is open).
"WPF has many lovers. It's a veritable porn star!" - Josh Smith
As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
-
Hi, I created a class library and wrote a function with the try {} catch { throw ;} finally {} manner. However I am not doing anything in the catch block, only throwing the exception. I am handling the exception the UI layer which is using that class library. I want to know the best approach to write the try block. If I use only try {} finally {} without catch block, does it good ?:confused:
Pankaj
Hi, a try block accepts one or more catch blocks and one or no finally blocks; When there is a finally block, the catch blocks can be left out. A catch block that only throws does not make any sense; just throw it out! :)
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
-
Hi, a try block accepts one or more catch blocks and one or no finally blocks; When there is a finally block, the catch blocks can be left out. A catch block that only throws does not make any sense; just throw it out! :)
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.
Exactly.
-
Exactly.
:beer:
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.