Exception.StackTrace

Exception中的StackTrace属性

执行堆栈跟踪在给定时刻正在执行的所有方法。 对方法调用的跟踪称为堆栈跟踪。 堆栈跟踪列表提供了一种循着调用堆叠跟踪到方法中异常发生处行号的手段。
StackTrace 属性返回源于异常引发位置的调用堆栈的框架。 您可以通过创建 System.Diagnostics.StackTrace 类的新实例并使用它的 StackTrace.ToString 方法获得有关调用堆栈中的其他帧的信息。

当应用程序代码中抛出异常时,公共语言运行时 (CLR) 将更新堆栈跟踪(通过使用 throw 关键字)。

如果已使用不同于最初引发异常的方法重新引发该异常,则堆栈跟踪将包含最初引发该异常的方法的位置,重新引发改异常的方法位置。

如果引发该异常,且稍后以相同的方法重新引发,则堆栈跟踪将只包含再次引发异常的位置,而不包括最初引发异常的位置。
因为优化过程中的代码转换(如内联),StackTrace 属性可能无法按预期报告许多方法调用。

需要注意的是,只能throw一次,如果throw两次的话,那么最上层捕获的异常,则不包含原始的引发异常的位置

时间: 2024-11-05 23:23:41

Exception.StackTrace的相关文章

借助backtrace和demangle实现异常类Exception

C++的异常类是没有栈痕迹的,如果需要获取栈痕迹,需要使用以下函数: #include <execinfo.h> int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buffer, int size); void backtrace_symbols_fd(void *const *buffer, int size, int fd); backtrace将当前程序的调用信息存储在buffer中

#测试相关#Getting “junit.framework.AssertionFailedError: Forked Java VM exited abnormally” Exception

编写Ant脚本进行持续测试的时候,出现了junit.framework.AssertionFailedError: Forked Java VM exited abnormally的报错,以此为关键字谷歌了很久,得到的答案几乎都是扩大内存之类,或者设置junit标签的fork为no的,试过了均是无效. 其实这个提示是不够精准的. I faced similar issue. I ran junit tests as ant task. Added showoutput="yes" an

异常类Exception

Exception.h 1 #ifndef EXCEPTION_H 2 #define EXCEPTION_H 3 #include <string> 4 #include <exception> 5 6 7 class Exception : public std::exception 8 { 9 public: 10 explicit Exception(const char *what); 11 explicit Exception(const std::string &am

[Tips][C#] 正确重抛例外 (Exception) 的方式

正确重抛例外 (Exception) 的方式 前言 最近在Review项目程序时,发现有把Try-Catch捕捉到之Exception直接抛出的状况(如左下图所示),其实这样是不恰当的做法:较好的方式是使用throw重抛例外就好了(如右下图所示).这两者到底由何差异,以下将就简单实例来进行探讨. ?? 差异比较 大家都知道在捕捉到例外时,可以从Exception.StackTrace属性中来获得调用栈资讯,进而了解错误发生的确切位置,以方便调试作业的进行.以下将就该资讯的完整度探讨两者之差异.

MVC过滤器详解

APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常).如下表, 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法 Exce

ASP.NET CORE小试牛刀:干货(完整源码)

扯淡 .NET Core 的推出让开发者欣喜万分,从封闭到拥抱开源十分振奋人心.对跨平台的支持,也让咱.NET开发者体验了一把 Write once,run any where 的感觉!近期离职后,时间比较充裕,我也花了些时间学习了 ASP.NET Core 开发,并且成功将之前的一个小网站 www.52chloe.com 极其后台管理移植成 ASP.NET Core,并部署到 linux 上.项目完整源码已经提交到 github,感兴趣的可以看看,希望对大家有用. 项目介绍 前端以 MVVM

如何简易的提高吞吐量

性能提升还是那几个要素,就像我在之前的博文里面提到的一样,这一篇只是更加简单一点而已. 因为硬件配置是固定的,那我们只是简单说一说在使用C#进行开发的项目中,如何使用一些简单的小招数让性能有一个比较大幅度的显著提升. 一.绕开那些烦人却又不可避免的DB操作. DB操作是不可避免却又是项目重中之中的所在,那我们可以做哪些优化呢? 首先,根据业务将DB操作分为需要即时和非即时的两块,关于非即时的我们可以将其单独的交给某一个线程来单独慢慢处理.代码如下: public class DbActionQu

无需写try/catch,也能正常处理异常

对于企业应用的开发者来说,异常处理是一件既简单又复杂的事情.说其简单,是因为相关的编程无外乎try/catch/finally+throw而已:说其复杂,是因为我们往往很难按照我们真正需要的策略来处理异常.我一直有这样的想法,理想的企业应用开发中应该尽量让框架来完成对异常的处理,最终的开发人员在大部分的情况下无需编写异常处理相关的任何代码.在这篇文章中我们将提供一个解决方案来让ASP.NET应用利用EntLib的异常处理模块来实现自动化的异常处理. 源代码: Sample1[通过重写Page的O

【转载】ASP.NET MVC的过滤器

APS.NET MVC中(以下简称“MVC”)的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理.这时候就用到了过滤器. MVC支持的过滤器类型有四种,分别是:Authorization(授权),Action(行为),Result(结果)和Exception(异常).如下表, 过滤器类型 接口 描述 Authorization IAuthorizationFilter 此类型(或过滤器)用于限制进入控制器或控制器的某个行为方法 Exce