日期:2014-05-19  浏览次数:20535 次

如何当程序发生错误时,彻底终止程序的运行?
每个函数都是这么写的(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);
}