[.NET] CErrStack 方便地管理错误或异常
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 方便地管理错误或异常的更多相关文章
- Go语言项目的错误和异常管理 via 达达
Go语言项目的错误和异常管理 最近连续遇到朋友问我项目里错误和异常管理的事情,之前也多次跟团队强调过错误和异常管理的一些概念,所以趁今天有动力就赶紧写一篇Go语言项目错误和异常管理的经验分享. 首先我 ...
- Py-上下文管理方法,描述符的应用,错误与异常
上下文管理方法: 可以在exit里面弄一些内存清理的功能 class Open: def __init__(self,name): self.name=name def __enter__(self) ...
- python 常见错误和异常 函数 正则表达式及多线程编程
生成随机密码#!/usr/bin/env python import stringfrom random import choice def gen_pass(num=9): all_chs = st ...
- Python错误和异常概念(总)
转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自:[Edwin博客园] Python错误和异常概念(总) 1. 错误和异常的处 ...
- 关于Python中的错误与异常,你是否了解的够仔细?
每次版本结束都描述这着同样的错误,相似的问题,但始终没见解决.所以今天,我就来总结下Python的错误与异常! 异常与错误 错误 语法错误 可以通过IDE或者解释器给出提示的错误 opentxt('a ...
- Python错误与异常
1 异常和错误 1.1 错误和异常 从软件方面来说,错误是语法或者逻辑上的,语法错误指示软件的结构上有错误,导致不能被解释器解释.当程序的语法正确后,剩下的就是逻辑错误了,逻辑错误可能是由于不完整或者 ...
- python的错误和异常
python错误和异常 错误 错误分为语法错误和逻辑错误 语法错误 >>> if File "<stdin>", line 1 if ^ Syntax ...
- Python错误和异常学习
一:错误解释 1.语法错误:代码不符合解释器或者编译器语法 2.逻辑错误:不完整或者不合法输入或者计算出现问题 代码运行前的语法或者逻辑错误,语法错误在执行前修改,逻辑错误无法修改 二:异常 执行过程 ...
- PHP 错误与异常 笔记与总结(10)错误处理器测试
关联文件:myErrorHandler.php (上一篇) 先测试通知级别的错误的自定义处理: testErrorHandler.php <?php require_once 'myErrorH ...
随机推荐
- CGI,FastCGI,PHP-CGI与PHP-FPM
CGI CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上. CGI可以用任何一 ...
- bcd-ascii相互转换函数
// BCD转ASCII int Asc2Bcd(unsigned char *input, unsigned int inputLen, unsigned char *output) { unsig ...
- JSON简单介绍
//JSON是一种数据格式//JSON比较像php里面的关联数组,它里面存的内容也是key和value成对存在的 JSON写法格式 var js = { "one":"h ...
- STEP模块——电子钟
原理 显示时分秒(日期也可以加上),两个按键调节时间 原理图 代码 /*---------------------------------------------------------------- ...
- Android 组件属性
属性名称 描述 android:background 设置背景色/背景图片.可以通过以下两种方法设置背景为透明:”@android:color/transparent”和”@null”.注意TextV ...
- CSS3入门--线条动画特效实例
HTML: <div></div> CSS: div{ width: 200px; height: 200px; margin: 200px auto; background: ...
- JS日期类型处理
Date 操作日期和时间的对象 Date.getDate( ) 返回一个月中的某一天 Date.getDay( ) 返回一周中的某一天 Date.getFullYear( ) 返回Date对象的年份字 ...
- JS Math.max() 函数
Math.max(a,b,...,x,y) -- 返回数个数字中较大的值 max是maximum的缩写,中文"最大量"的意思 max函数语法Math.max(a,b,...,x,y ...
- JavaScript 基础知识之对比记忆学习
1. alter修改(易写混),alert警告 alert 函数语法:alert(str);str字符串用单引号或双引号隔开 2.标识符和关键字 标识符:由不以数字开头的字母.数字.下划线.$组成. ...
- 为dom添加点击事件,由此引发this指向的思考
下午没有任务,闲来无事仿个小网页巩固下基础知识.由于公司安全规定,原网页截图不便上传(也没法上传),回家后做了个简单的菜单以图示: 目标:点击某选项时,该选项底边加粗 1.首先定义click方法,然后 ...