如何当程序发生错误时,彻底终止程序的运行?
每个函数都是这么写的(vb.net)
try
……
Catch ex As Exception
Show_ErrInfo(ex.Message)
End Try
但是,当调用的某一个函数出现问题时,程序不能彻底终止运行,还继续执行下面的代码。
我的目的只要程序一运行Show_ErrInfo就彻底终止,不再往下执行了,因为执行也是错误的,我使用了Response.End(),但没有起到作用,怎么办?
'输出错误信息
Public Sub Show_ErrInfo(ByVal ErrInfo As String)
Close_Access_DataTable()
Response.Write( "很遗憾,在数据的显示过程中出现了不可预知的错误!具体如下: <br> ")
Response.Write(ErrInfo)
Response.End()
End Sub
------解决方案--------------------up
------解决方案--------------------Response.End()怎么就不起作用了呀?
“每个函数都是这么写的(vb.net)”这有点过分。怎么能够在函数中这样设计呢?函数怎么知道它有Response可用呢?职责不分(但愿你理解我的意思)。你应该在所有函数的外边,也就是在页面或者控件最外层代码,或者说Throw嵌套的最外层(!),才调用Show_ErrInfo。
------解决方案--------------------Response.End()实际上也就是执行一个Throw Exception,抛出异常。如果你的try...catch....的意图都像你做的那样是把异常给隐藏起来,那么Response.End肯定就会失去功能。
对于异常,如果没有把握全面解决了异常问题,就应该继续抛出异常。例如写:
try
{
.......
}
catch(FileNotFoundException ex)
{
Response.Write( "文件不存在。这个输出意味着我已经处理的异常。 ");
}
catch(NotImplementedException ex)
{
Response.Write( "功能未实现不存在。这个输出意味着我还没有处理的异常,只是通知。 ");
Throw ex;
}
catch(Exception ex)
{
throw new Exception( "在abc功能失败。请使用Inner属性察看内部异常堆栈。 ",ex);
}