You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core中定位Visual Studio输出的“Exception Thrown”异常

排查非主线程未捕获InvalidCastException的方案

1. 强制调试器在指定异常抛出时中断

  • 调试状态下按Ctrl + Alt + E打开「异常设置」面板
  • 搜索System.InvalidCastException,勾选该异常前的复选框。配置后无论异常发生在哪个线程、是否被代码捕获,调试器都会在异常抛出的第一时间中断,直接定位到出错的代码行
  • 如果需要排查所有未捕获异常,可以勾选「公共语言运行时异常」根节点,让调试器捕获所有CLR层抛出的异常

2. 全局捕获异常输出完整堆栈

如果不想每次异常都中断,可以在程序入口处添加全局异常监听代码,将全量异常信息打印到调试输出窗口:

// 捕获非UI线程未处理异常
AppDomain.CurrentDomain.UnhandledException += (s, e) =>
{
    System.Diagnostics.Debug.WriteLine($"未处理异常详情:\n{e.ExceptionObject}");
};

// 捕获异步Task未观察到的异常
TaskScheduler.UnobservedTaskException += (s, e) =>
{
    System.Diagnostics.Debug.WriteLine($"未观察Task异常详情:\n{e.Exception}");
    e.SetObserved();
};

3. 调试配置优化

  • 打开「工具」->「选项」->「调试」->「常规」,取消勾选「仅我的代码」,可以获取到跨库调用的完整堆栈信息
  • 右键点击输出窗口空白处,确认「异常消息」「堆栈跟踪」选项已勾选,保证所有异常相关信息都会被输出

内容的提问来源于stack exchange,提问作者Vaccano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 03:27:03