获得系统异常的详细信息
2004-03-30 11:33
337 查看
在.net中有一个非常重要的namespace System.Diagnostics,在这个namespace中我们可以与系统进程、事件日志和性能计数器进行交互(MSDN)。
在他的下面包含着两个class:StackTrace 和 StackFrame。StackTrace:表示一个堆栈跟踪,它是一个或多个堆栈帧的有序集合。StackFrame:提供关于 StackFrame(表示当前线程的调用堆栈中的一个函数调用)的信息。(MSDN)。
一般在应用系统中我们很有可能不是在当前方法去捕获异常,或者系统中的有些异常可能使我们没有处理的,然后我们来个集中处理,捕获所有的系统异常。系统中每执行一个方法都会将相关的信息压入到Stack中,这时我们就可以用上面的两个类来了解异常的更多详细信息!
下面我们用一个示例来演示怎样得到捕获的系统异常的详细信息。
private void DisplayExceptionInfo(Exception e)
{
//定义堆栈 ,从出现异常的地方开始跟踪一直到调用本方法的方法
StackTrace st = new StackTrace(e,true);
int i;
//遍历堆栈中帧
for(i=0;i<=st.FrameCount;i++)
{
StackFrame sf;
sf = st.GetFrame(i);
MemberInfo mi;
//得到方法
mi= sf.GetMethod();
string res;
//这个方法的命名空间
res = mi.DeclaringType.Namespace + ".";
//class名
res = res + mi.DeclaringType.Name + ".";
res = res + mi.Name;
//取得文件名(物理路径)、行号,列号
if(sf.GetFileName() != string.Empty)
{
res = res + sf.GetFileName() + ",Line" + sf.GetFileLineNumber() + ",Col" + sf.GetFileColumnNumber();
}
}
}
在他的下面包含着两个class:StackTrace 和 StackFrame。StackTrace:表示一个堆栈跟踪,它是一个或多个堆栈帧的有序集合。StackFrame:提供关于 StackFrame(表示当前线程的调用堆栈中的一个函数调用)的信息。(MSDN)。
一般在应用系统中我们很有可能不是在当前方法去捕获异常,或者系统中的有些异常可能使我们没有处理的,然后我们来个集中处理,捕获所有的系统异常。系统中每执行一个方法都会将相关的信息压入到Stack中,这时我们就可以用上面的两个类来了解异常的更多详细信息!
下面我们用一个示例来演示怎样得到捕获的系统异常的详细信息。
private void DisplayExceptionInfo(Exception e)
{
//定义堆栈 ,从出现异常的地方开始跟踪一直到调用本方法的方法
StackTrace st = new StackTrace(e,true);
int i;
//遍历堆栈中帧
for(i=0;i<=st.FrameCount;i++)
{
StackFrame sf;
sf = st.GetFrame(i);
MemberInfo mi;
//得到方法
mi= sf.GetMethod();
string res;
//这个方法的命名空间
res = mi.DeclaringType.Namespace + ".";
//class名
res = res + mi.DeclaringType.Name + ".";
res = res + mi.Name;
//取得文件名(物理路径)、行号,列号
if(sf.GetFileName() != string.Empty)
{
res = res + sf.GetFileName() + ",Line" + sf.GetFileLineNumber() + ",Col" + sf.GetFileColumnNumber();
}
}
}
相关文章推荐
- [小代码]获得系统SDK的详细信息
- 黑客编程教程(十一)获得系统详细信息
- C#获取系统相关信息_详细异常信息
- 怎么获得异常的详细信息 printStackTrace
- 获得系统详细信息
- 黑客编程教程(十一)获得系统详细信息
- [已更新]异常详细信息: System.IO.FileLoadException: 未能加载文件或程序集
- 异常详细信息: System.UnauthorizedAccessException:
- 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法v
- AnyCut | 创建桌面快捷方式 | PackageManager获得系统基本信息 | UserTask多线程
- .NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
- Python语言学习讲解七:使用traceback获取详细的异常信息
- 用SetUpDi系列函数获得系统设备信息
- 异常详细信息: System.Web.HttpException: DropDownList 不能有多个项被选定。
- 通过信息系统监理师考试,获得证书,小高兴一下!!!呵呵!!!
- [转]如何获得U盘的详细信息
- EF 更新条目时出错。有关详细信息,请参见内部异常。
- 怎样获得访客的IP,系统,IE版本等信息并显示在IE代码
- 其他信息: 具有固定名称“Npgsql”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。有关详细信息,请参阅内部异常
- [课程设计]Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面)