Option Explicit On
Option Strict On Imports System.Reflection
Imports System.Diagnostics Public Structure ErrInfo Public Number As Integer
Public Description As String
Public Comment As String Public ClassName As String
Public FuncName As String Public Sub New(Number As Integer, Description As String, Comment As String, ClassName As String, FuncName As String)
With Me
.Number = Number
.Description = Description
.Comment = Comment .ClassName = ClassName
.FuncName = FuncName
End With
End Sub Public Overrides Function ToString() As String
Dim Msg As String
If Comment IsNot Nothing Then
Msg = ClassName & "::" & FuncName & "()" & vbCrLf & _
"Err " & Number.ToString & ": " & Description & vbCrLf & _
vbCrLf & _
Comment
Else
Msg = ClassName & "::" & FuncName & "()" & vbCrLf & _
"Err " & Number.ToString & ": " & Description
End If
Return Msg
End Function Public Sub ShowMsgBox()
MsgBox(Me.ToString(), MsgBoxStyle.Critical, "Error " & Number.ToString)
End Sub End Structure Public Class CErrStack Private m_ErrStack As New Stack(Of ErrInfo) Public Function Push(ErrInfo As ErrInfo) As ErrInfo
m_ErrStack.Push(ErrInfo)
Return ErrInfo
End Function Public Function Push(Optional Comment As String = Nothing, Optional StackFrameIndex As Integer = ) As ErrInfo
Dim ErrObj As ErrObject = Err()
Return Push(ErrObj.Number, ErrObj.Description, Comment, StackFrameIndex + )
End Function Public Function Push(Number As Integer, Description As String, Optional Comment As String = Nothing, Optional StackFrameIndex As Integer = ) As ErrInfo
Dim STrace As New StackTrace(True)
Dim SFrame As StackFrame = STrace.GetFrame(StackFrameIndex)
Dim tError As ErrInfo
If SFrame Is Nothing Then
tError = New ErrInfo(Number, Description, Comment, "UnknownClass", "UnknownMethod")
Else
Dim tMethod As MethodBase = SFrame.GetMethod()
tError = New ErrInfo(Number, Description, Comment, tMethod.ReflectedType.FullName, tMethod.Name)
End If
m_ErrStack.Push(tError)
Return tError
End Function Public Function Push(Err As ErrObject, Optional Comment As String = Nothing, Optional StackFrameIndex As Integer = ) As ErrInfo
Return Push(Err.Number, Err.Description, Comment, StackFrameIndex + )
End Function Public Function Push(Ex As Exception, Optional Comment As String = Nothing) As ErrInfo
m_ErrStack.Push(New ErrInfo(Err().Number,
Ex.Message,
Comment,
Ex.TargetSite.ReflectedType.FullName,
Ex.TargetSite.Name))
Return m_ErrStack.Last()
End Function Public Function Push(Ex As Exception, Number As Integer, Optional Comment As String = Nothing) As ErrInfo
m_ErrStack.Push(New ErrInfo(Number,
Ex.Message,
Comment,
Ex.TargetSite.ReflectedType.FullName,
Ex.TargetSite.Name))
Return m_ErrStack.Last()
End Function Public Function Pop() As ErrInfo
If m_ErrStack.Count = Then Return Nothing
Return m_ErrStack.Pop()
End Function Public ReadOnly Property Last() As ErrInfo
Get
If m_ErrStack.Count = Then Return Nothing
Return m_ErrStack.Last()
End Get
End Property Public Function MsgLastErrPop() As ErrInfo
If m_ErrStack.Count = Then Return Nothing
MsgLastErrPop = m_ErrStack.Pop()
MsgLastErrPop.ShowMsgBox()
End Function Public Function MsgLastErr() As ErrInfo
If m_ErrStack.Count = Then Return Nothing
MsgLastErr = m_ErrStack.Peek()
MsgLastErr.ShowMsgBox()
End Function Public Overrides Function ToString() As String
If m_ErrStack.Count = Then Return Nothing
Return m_ErrStack.Last().ToString()
End Function End Class

[.NET] CErrStack 方便地管理错误或异常的更多相关文章

  1. Go语言项目的错误和异常管理 via 达达

    Go语言项目的错误和异常管理 最近连续遇到朋友问我项目里错误和异常管理的事情,之前也多次跟团队强调过错误和异常管理的一些概念,所以趁今天有动力就赶紧写一篇Go语言项目错误和异常管理的经验分享. 首先我 ...

  2. Py-上下文管理方法,描述符的应用,错误与异常

    上下文管理方法: 可以在exit里面弄一些内存清理的功能 class Open: def __init__(self,name): self.name=name def __enter__(self) ...

  3. python 常见错误和异常 函数 正则表达式及多线程编程

    生成随机密码#!/usr/bin/env python import stringfrom random import choice def gen_pass(num=9): all_chs = st ...

  4. Python错误和异常概念(总)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自:[Edwin博客园] Python错误和异常概念(总) 1. 错误和异常的处 ...

  5. 关于Python中的错误与异常,你是否了解的够仔细?

    每次版本结束都描述这着同样的错误,相似的问题,但始终没见解决.所以今天,我就来总结下Python的错误与异常! 异常与错误 错误 语法错误 可以通过IDE或者解释器给出提示的错误 opentxt('a ...

  6. Python错误与异常

    1 异常和错误 1.1 错误和异常 从软件方面来说,错误是语法或者逻辑上的,语法错误指示软件的结构上有错误,导致不能被解释器解释.当程序的语法正确后,剩下的就是逻辑错误了,逻辑错误可能是由于不完整或者 ...

  7. python的错误和异常

    python错误和异常 错误 错误分为语法错误和逻辑错误 语法错误 >>> if File "<stdin>", line 1 if ^ Syntax ...

  8. Python错误和异常学习

    一:错误解释 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改 二:异常 执行过程 ...

  9. PHP 错误与异常 笔记与总结(10)错误处理器测试

    关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...

随机推荐

  1. intent参数的回传

    1. public class MainActivity extends Activity { private EditText editText1, editText2, editText3; pr ...

  2. 14071702(SkeletalControl_Limb)

    [目标] SkeletalControl_Limb [思路] HumanIK的15 个节点 CCDIK [步骤] 1 先编译[!BuildAll] [注]先把SYSTEM文件夹该为非只读属性,编译生成 ...

  3. ubuntu 终端快捷键

    快捷键 功能Tab 自动补全Ctrl+a 光标移动到开始位置Ctrl+e 光标移动到最末尾Ctrl+k 删除此处至末尾的所有内容Ctrl+u 删除此处至开始的所有内容Ctrl+d 删除当前字符Ctrl ...

  4. 项目导入myeclipse10后jsp报错问题

    电脑重装系统装了个myeclipse10,当项目导入时发现jsp报错,原本以为是jdk版本问题,在网上找了资料才知道原来是myeclipse10相对之前版本对js的检查更加严格了.可以用以下方法解决: ...

  5. C++中的static关键字的总结

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用. 1.面向过程设计中的st ...

  6. Haskell Tuple相关总结

    一.相关操作 zip:将两个List合并成一个元组序对的List. fst:返回元组序对第一个元素. snd:返回元组序对第二个元素. PS:元组序对是元组中只有两个元素的元组. 二.与List的比较 ...

  7. Android 设置ListView当前显示的item

    项目中可能会有这种需求:动态设置ListView显示的item 这种需求可能会出现在不同的情况下,有的是打开页面就要显示在特定的位置,也有的是浏览列表时实时更新数据并且改变了集合中数据,或者是某种条件 ...

  8. 易云盘(nester)-面对企业的和团队文档管理的平台

    易云盘(nester)是本人的另外一款作品,先前开发和维护的在线设计工具Visor也已经合并在Nester的最新版里了. 目前作为共享版发布. 特点 Nester后端是以Spring Framewor ...

  9. 编程key note

    一些日常发现的code better的要点.不断更新. * #include <assert.h> 使用断言* 每个模块(文件)应该有一个唯一的一个前缀,模块导出的所有全局名字都应以此前缀 ...

  10. rocksDB 安装问题简单介绍

    前一段时间准备测试rocksdb,按照帖子和官网的例子,在安装过程中遇到一些问题.这里给出的是在Ubuntu下安装python使用的版本. 首先,要感谢这些帖子对我的帮助: 1:http://tech ...