获取导致异常的表单名称、方法名称和更多详细信息

     2023-02-24     159

关键词:

【中文标题】获取导致异常的表单名称、方法名称和更多详细信息【英文标题】:Get Form Name, Method Name and More Details that caused the exception 【发布时间】:2014-01-17 05:45:40 【问题描述】:

我正在尝试使用 Program.cs 文件中的以下代码来捕获未处理的异常。

我正在尝试创建一个包含错误的所有必需信息的字符串。这样我就可以识别代码中发生错误的点。

我的问题是有一种方法可以在编译和混淆后从错误对象中获取以下详细信息

发生错误的表单名称

触发错误的代码行号

以及任何其他有用的信息来查明确切的代码行

private static void OnUnhandledException(Object sender, UnhandledExceptionEventArgs e)
            
   string error;

          error = e.Exception.Message + "|" + e.Exception.TargetSite;
      

        private static void OnGuiUnhandedException(object sender, System.Threading.ThreadExceptionEventArgs e)
        


   string error;

          error = e.Exception.Message + "|" + e.Exception.TargetSite;

         

【问题讨论】:

只要您需要此代码正常运行,您不需要 需要混淆。除了为您诊断错误之外,没有人对反编译错误代码感兴趣。这比程序员想象的要普遍得多。因此,只需关闭混淆以获得简单的解决方法:) 联系混淆器供应商以获得支持,他们都有一些方法来获取可用的堆栈跟踪。 @HansPassant 是的,您需要权衡封闭代码的感觉以获得更好的错误处理。他们确实提供了一种方法,但它使易受攻击的代码更容易受到攻击 【参考方案1】:

简单地说,

(e.ExceptionObject as Exception).ToString();

解决你的目的。

【讨论】:

【参考方案2】:

只需使用 > System.Environment.StackTrace

try

    //Exception

    throw new Exception("An error has happened");

catch (Exception ex)

     //Open the trace
     System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
     //Write out the error information, you could also do this with a string.Format 
     as I will post lower
     Console.WriteLine(trace.GetFrame(0).GetMethod().ReflectedType.FullName);
     Console.WriteLine("Line: " + trace.GetFrame(0).GetFileLineNumber());
     Console.WriteLine("Column: " + trace.GetFrame(0).GetFileColumnNumber());

使用字符串格式

String.Format("An error has occurred at 0 at line 1", trace.GetFrame(0).GetMethod().ReflectedType.FullName,  trace.GetFrame(0).GetFileLineNumber());

【讨论】:

UnhandledExceptionEventArgs 没有 Stacktrace,这可以吗? @techno ***.com/questions/10202987/… 谢谢,但经过混淆处理后得到的都是一些随机字符。但是当不使用堆栈跟踪时,它会返回正确的数据,即:仅异常对象。有没有办法从中获取更多数据?【参考方案3】:

我编写了以下 sn-p 并已将其用于我的所有应用程序。它遍历所有内部异常和包含您需要的大部分信息的那些异常的堆栈跟踪:

public static string ExceptionTree(Exception ex)

    // find all inner exceptions
    StringBuilder strbException = new StringBuilder();
    do
    
        strbException.AppendLine("Exception: " + ex.Message);
        strbException.AppendLine("Stack Trace: " + ex.StackTrace);
        strbException.AppendLine();

        ex = ex.InnerException;
    
    while (ex != null);

    return strbException.ToString();

【讨论】:

UnhandledExceptionEventArgs 没有 Stacktrace

在android中调用方法详细信息,例如行号,方法名称和类名称[重复]

...法的详细信息,如行号、方法名和类名。如何在android中获取所有这些信息,每当在应用程序中调用方法时,必须显示调用方 查看详情

如何通过在目标 c 中搜索应用程序名称来获取给定的应用程序名称和详细信息?

】如何通过在目标c中搜索应用程序名称来获取给定的应用程序名称和详细信息?【英文标题】:HowtogetgivenAppnamesanddetailsbysearchingappnameinobjectivec?【发布时间】:2011-11-2409:21:14【问题描述】:我需要将我的应用从xcode连接到iTunes以... 查看详情

无效的对象名称“表名”

...发生了未处理的异常当前的网络请求。请查看堆栈跟踪以获取更多信息有关错误的信息以及它在代码中的来源。异常详细信息 查看详情

显示全部按钮报错

...常信息:调用方法ShowAll发生异常,详细请看内部异常信息!导致错误的应用程序或对象的名称:Genersoft.Platform.Core.AppInvoke.AppInvokeCore引发当前异常的方法:VoidUnwrap 查看详情

Facebook 登录响应:不获取用户详细信息(ID 和名称除外)

】Facebook登录响应:不获取用户详细信息(ID和名称除外)【英文标题】:Facebookloginresponce:NotGetUsersdetailsexcept(Idandname)【发布时间】:2015-08-1110:08:51【问题描述】:Facebook登录响应未获取用户的所有详细信息,例如电子邮件、名字... 查看详情

如何在 iOS 7 中使用 iBeacons 获取设备详细信息,如 UUID 或设备名称

】如何在iOS7中使用iBeacons获取设备详细信息,如UUID或设备名称【英文标题】:HowtogetdevicedetailslikeUUIDornameofthedeviceusingiBeaconsiniOS7【发布时间】:2013-12-0206:45:42【问题描述】:请任何人建议我通过iBeacons获取连接设备的UUID或设备名... 查看详情

使用谷歌地图中的纬度和经度获取地点详细信息或建筑物名称(Places API ?)

】使用谷歌地图中的纬度和经度获取地点详细信息或建筑物名称(PlacesAPI?)【英文标题】:GetPlacedetailsorbuildingnamesusinglatitudeandlongitudeinGoogleMaps(PlacesAPI?)【发布时间】:2011-11-0721:47:30【问题描述】:有没有人知道如何使用纬度... 查看详情

如何在OnExceptionAsync c#中获取引发异常的方法名称[重复]

】如何在OnExceptionAsyncc#中获取引发异常的方法名称[重复]【英文标题】:HowtogetthemethodnamethatoriginatedtheexceptioninOnExceptionAsyncc#[duplicate]【发布时间】:2021-12-0421:50:46【问题描述】:我试图在我的异常过滤器中获取源自异常的方法名... 查看详情

reflection(反射)

...用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法3.使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic或private)和实现详细信息(如abstract或virtual... 查看详情

从堆栈跟踪中获取更多详细信息

】从堆栈跟踪中获取更多详细信息【英文标题】:Gettingmoredetailfromstacktraces【发布时间】:2010-10-1204:09:35【问题描述】:有没有一种方便的方法来获取有关Python异常的更详细的堆栈跟踪?我希望找到一个包装实用程序/模块或其他... 查看详情

c#怎么使用反射获取事件的响应方法

...用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。(3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic或private)和实现详细信息(如abstract或... 查看详情

获取购物车商品名称、数量所有详细信息 woocommerce

】获取购物车商品名称、数量所有详细信息woocommerce【英文标题】:Getcartitemname,quantityalldetailswoocommerce【发布时间】:2015-04-1901:03:30【问题描述】:我正在尝试将woocommerce购物车商品发送到第三方运输工具。我需要将商品名称、... 查看详情

java示例代码_获取有关我的应用程序中发生的异常的更多详细信息

java示例代码_获取有关我的应用程序中发生的异常的更多详细信息 查看详情

表单验证插件——validate

...件自带包含必填、数字、URL在内容的验证规则,即时显示异常信息,此外,还允许自定义验证规则,插件调用方法如下:$(form).validate({options})其中form参数表示表单元素名称,options参数表示调用方法时的配置对象,所有的验证规... 查看详情

获取带有全名详细信息和电话号码的 SINGLE 光标

】获取带有全名详细信息和电话号码的SINGLE光标【英文标题】:ObtainingaSINGLEcursorwithfullnamedetailsandphonenumbers【发布时间】:2012-07-3002:26:28【问题描述】:我想创建一个同时包含名字、姓氏和电话号码的光标。这些列不位于ContactsCo... 查看详情

异常详细信息:System.ArgumentNullException:值不能为空。参数名称:运行时的meth

】异常详细信息:System.ArgumentNullException:值不能为空。参数名称:运行时的meth【英文标题】:ExceptionDetails:System.ArgumentNullException:Valuecannotbenull.Parametername:methwhenrunning【发布时间】:2012-02-2420:09:43【问题描述】:我有一个项目,... 查看详情

如何获取 .apk 文件详细信息(如:名称、id、vercode ..etc)存储在 android 设备的外部存储中

】如何获取.apk文件详细信息(如:名称、id、vercode..etc)存储在android设备的外部存储中【英文标题】:Howtoget.apkfilesdetails(like:name,id,vercode..etc)storedinexternalstorageofandroiddevice【发布时间】:2015-04-2811:59:00【问题描述】:我怎样才能... 查看详情

C# Ms-access 从数据库中获取详细信息

】C#Ms-access从数据库中获取详细信息【英文标题】:C#Ms-accessGettingdetailsfromdatabase【发布时间】:2015-07-2414:32:01【问题描述】:我使用SQL、OLEDB提供程序创建了一个登录表单,它会提示用户输入名称和密码,如果两者都与MicrosoftAcce... 查看详情