Monday, February 13, 2012
ALL 'try/catch/finally' NOT created equal?
> I created a try/catch/finally but when an expection is thrown, the
> catch does not handle it... (I know this code is wrong, I want to
> force the error for this example)
>
> try
> {
> DataSet ds = new DataSet();
> string strID = ds.Tables[0].Rows[0][0].ToString();
> }
> catch (SqlXmlException sqlxmlerr)
> {
> sqlxmlerr.ErrorStream.Position = 0;
> StreamReader errreader = new StreamReader(sqlxmlerr.ErrorStream);
> string err =errreader.ReadToEnd();
> errreader.Close();
> throw new Exception (err);
> }
> finally
> {
> }
> This is a ASP.NET application and when the code hits 'string strID =
> ds.Tables[0].Rows[0][0].ToString();' the exception is throw and the
> result below is displayed in the browser.
> *************
> Cannot find table 0.
> Description: An unhandled exception occurred during the execution of
> the current web request. Please review the stack trace for more
> information about the error and where it originated in the code.
> Exception Details: System.IndexOutOfRangeException: Cannot find table
> 0.
> Source Error:
>
> Line 29: {
> Line 30: DataSet ds = new DataSet();
> Line 31: strID = ds.Tables[0].Rows[0][0].ToString();
> Line 32: }
> Line 33: catch (SqlXmlException sqlxmlerr)
> *************
>
> Now, if I replace SqlXmlException with System.Exception in the
> catch(), the try/catch handles they way I thought and no browser error
> happens, the code goes directly to my catch (during debugging, I made
> sure)....
> So my question.
>
> Just because I have a try/catch doesn't mean it will ALWAYS catch
> an exception. I guess I have proven this but wanted confirmation. So
> how do I know what exception class to use? Where can I find this
> information.
> Thanks
> Ralph Krausse
> www.consiliumsoft.com
> Use the START button? Then you need CSFastRunII...
> A new kind of application launcher integrated in the taskbar!
> ScreenShot - http://www.consiliumsoft.com/ScreenShot.jpg
User submitted from AEWNET (http://www.aewnet.com/)Well, your code is doing exactly what it says.
You coded:
catch (SqlXmlException sqlxmlerr)
which MEANS catch errors of this type [SqlXmlException] here.
The error thrown was for [System.IndexOutOfRangeException].
To catch ALL errors in on place use something like
catch(Exception e)
you can nest you catch clauses like
catch (SqlXmlException sqlxmlerr) {}
catch(Exception e){}
finianly{}
see BOL and the language specification for more details.
dlr
"Guest" <Guest@.aew_nospam.com> wrote in message
news:%23ZYEUnpSFHA.1160@.tk2msftngp13.phx.gbl...
>
> User submitted from AEWNET (http://www.aewnet.com/)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment