[.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 ...
随机推荐
- 我的毕业设计——基于安卓和.NET的笔记本电脑远程控制系统
手机端: 电脑端: 答辩完成后会开放代码.
- php开发必备小工具
/*递归删除目录及目录下的文件*/ function del_dir($dir){ $files = new DirectoryIterator($dir); foreach ($files as $ ...
- python基础教程-第三章-使用字符串
本章将会介绍如何使用字符串何世华其他的值(如打印特殊格式的字符串),并简单了解下利用字符串的分割.联接.搜索等方法能做些什么 3.1 基本字符串操作 所有标准的序列操作(索引.分片.乘法.判断成员资格 ...
- (DFS、全排列)POJ-2718 Smallest Difference
题目地址 简要题意: 给若干组数字,每组数据是递增的在0--9之间的数,且每组数的个数不确定.对于每组数,输出由这些数组成的两个数的差的绝对值最小是多少(每个数出现且只出现一次). 思路分析: 对于n ...
- struts入门实例
入门实例 1 .下载struts-2.3.16.3-all .不摆了.看哈就会下载了. 2 . 解压 后 找到 apps 文件夹. 3. 打开后将 struts2-blank.war ...
- SQL IF ELSE
if (条件) begin (执行模块) endelse if (条件) begin (执行模块) endelse begin ...
- STM32时钟数
在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. 其实是四个时钟源,如下图所示(灰蓝色),PLL是由锁相环电路倍频得到PLL时钟. ①.HSI是高速内部时钟,RC振荡器,频率为 ...
- C#文件流读写文件的简单winform实现
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 微信支付报错:Invalid thumbnail dimensions: 0x0
微信支付的 android 端在支付的时候闪退, 调试信息: 10-08 10:17:08.459 2127-3946/? E/ActivityManager: Invalid thumbnail d ...
- 【转】Tomcat的默认访问路径
放在外网的应用,用户多是直接输入域名访问,相信没有哪个后面还加个尾巴,而Tomcat的默认目录是ROOT,所以我们需要更改其默认目录. 更改Tomcat的默认目录很简单,只需要修改server.xml ...