在类中添加断言

简述:
用try捕获异常后主动抛出一个异常,在Global.asax.vb的Application_Error中用Server.ClearError()清除异常,用System.Web.HttpContext.Current.Response输出javascript代码实现信息提醒和返回上一页。

详细说明:
例如,把连接数据库的方法做成一个类cdbconn.vb。问题在于当数据库连接失败的时候,系统自动抛出的连接失败的异常的处理。
由于程序调用该类的对象后的动作不可预计,因此最好在处理该异常后,后台程序就此结束,返回之前的页面。
在类中捕获异常同样可以try,但是处理完后使后台程序就此结束就有点麻烦,在论坛中搜索到了思归大大给的一个连接:

HOW TO: Create Custom Error Reporting Pages in ASP.NET by Using Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;EN-US;306355
vb.net的联接是
http://support.microsoft.com/default.aspx?scid=kb;EN-US;308132

实践得出方案如下:
在类文件cdbconn.vb中有
Try
dbconn.Open()
Catch ex As Exception
'System.Web.HttpContext.Current.Response.Write(win.msgbox(strMsg_noneDatabase))
Throw New System.Exception(strMsg_noneDatabase)
End Try
截获异常后再抛出一个异常。这话听起来有点毛病,主要的用途在于可能会需要处理异常带来的麻烦,这里没有什么需要处理,所以只是自定义一个异常信息给系统用户。

在Global.asax.vb中的Application_Error中添加相关动作
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' 在发生错误时激发
Dim objErr As Exception = Server.GetLastError().GetBaseException()
Dim err As String = "Error Caught in Application_Error event" & _
System.Environment.NewLine & _
"Error in: " & Request.Url.ToString() & _
System.Environment.NewLine & _
"Error Message: " & objErr.Message.ToString() & _
System.Environment.NewLine & _
"Stack Trace:" & objErr.StackTrace.ToString()

'EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error)
Server.ClearError()
System.Web.HttpContext.Current.Response.Write("<script language='javascript'>alert('" & objErr.Message.ToString & "');</script>")
System.Web.HttpContext.Current.Response.Write("<script language='javascript'>history.go(-1);</script>")
End Sub

这里'EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error)会使异常正常抛出,而不会继续向下执行,所以注释掉了,msdn上拷来的,难道是版本问题?

最重要的就是Server.ClearError(),没有它异常会正常抛出的。截止到这一句系统会返回一张白纸,什么都没有这当然是不行的,所以下面用response输出提示,并返回上一页。至此问题解决。

时间: 2024-12-20 21:04:35

在类中添加断言的相关文章

graphics tem-1Qt如何在graphicsitem的继承类中添加图片?2如何给graphicsitem进行布局?

问题描述 1Qt如何在graphicsitem的继承类中添加图片?2如何给graphicsitem进行布局? 1Qt如何在graphicsitem的继承类中添加图片?? 2如何给graphicsitem进行布局?垂直平分 谢谢各位了

向已存在的要素类中添加字段

在写AE程序的时候,一定要进行License的验证.如果是WinForm程序,可以向窗口上拖放一个ArcGIS License控件:如果是Console程序,可以添加ArcGIS License Checking代码 1)通过IFieldsEdit接口的AddField方法的函数 static void AddField_IFields(IFeatureClass pFC, string name) { IFields pFields = pFC.Fields; IFieldsEdit pFie

在WinForm,自定义类中添加 System.Timers.Timer控件,为什么不能正常进行

问题描述 在自定义类中加入System.Timers.Timertimergamebegin;System.Timers.Timertimersendpoker;在构造函数中:publicMyClass(){this.timergamebegin=newSystem.Timers.Timer(Desk.addpointtimes*1000);timergamebegin.Elapsed+=newSystem.Timers.ElapsedEventHandler(this.timergamebeg

《C++面向对象高效编程(第2版)》——2.21 确保抽象的可靠性——类不变式和断言

2.21 确保抽象的可靠性--类不变式和断言 C++面向对象高效编程(第2版) 任何抽象都必须与客户履行它的契约(contract).当客户使用类时,他希望类的对象像其发布描述的那样运行正常.另一方面,类的实现者必须千方百计地确保对象运行正常.但是,类只有在客户履行自己那部分契约后,才能正确行使它的职责.例如,类的成员函数可能要求传入的参数为非零指针(non-zero pointer).只有满足此前提条件,成员函数才能保证它的行为.因此,客户必须履行一些义务.换言之,如果客户履行了她那部分契约,

c-MFC如何在其他类中让CView中的OnSize函数执行

问题描述 MFC如何在其他类中让CView中的OnSize函数执行 RT 我的项目把窗口进行分割,左边是的对话框可以控制右面是视图.窗口是通过CreateStatic进行分割,现在想从左边个类中添加这个语句PostMessage(pMain->m_hWnd,WM_SIZE,0,0);但是CView中的OnSize函数执行不会执行,不知道怎么做? 解决方案 可以用回调函数,比如在其他某个类中有个函数fun,可以这样 fun(Cview *ptr) { .. ptr->OnSize(); ...

MFC对话框中添加状态栏的方法_C 语言

本文实例讲述了MFC对话框中添加状态栏的方法.分享给大家供大家参考.具体如下: 1.在对话框的dlg实现类里添加成员变量: CXTPStatusBar m_wndStatusBar; //状态栏(或者是CStatusBar) //在OnInitDialog方法中初始化: static UINT indicators[] = { ID_SEPARATOR, // status line indicator ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICA

往Android系统中添加服务的方法教程

前言 最近因为公司的平台要从Android 4.4.4 转战 Android 6.0, 带来的问题是之前我们在系统中添加了一些服务, 于是要将一些系统级的服务迁移过去,以及一些Framework 的自定义包. 碰巧在Gerrit上看到了添加系统服务这一块的patch.正好做个总结.虽然我不是Framework工程师, 但是了解Android系统还是很有好处的. 如何获取系统服务 我们获取系统服务都是在context中,getSystemService获取到的. 那么我们看一下getSystemS

mfc入门-vs2010中mfc如何在已添加的类中再给后加的对话编辑器添加变量

问题描述 vs2010中mfc如何在已添加的类中再给后加的对话编辑器添加变量 vs2010中mfc如何在已添加的类中再给类创建之后添加的对话编辑器添加变量 解决方案 需要对话框重新绑定,生成对话框类,然后你添加变量等,你先生成类了,就只能手动修改了,没法自动绑定到资源

在RichEdit中添加表情图象的类

说明 本文根据VC知识库<在线杂志>的第30期的一篇文章:<类似 MSN 信息发送框的制作>,介绍了一个可以在RichEdit中添加表情图象的类CFaceEdit. 以下是使用这个类的程序截图: 图一 CFaceEdit类的使用 使用方法 我们可以先看一下它的使用方法: //将对话框类成员变量由CRichEditCtrl改为CFaceEdit CFaceEdit m_FaceEdit; //自定义一组表情 CString pSymbol[] = {":)", &