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

VS2022中C# WinForms调试时异常未在触发位置停止的问题

VS2022调试C# WinForms应用时异常跳转至系统代码的解决办法

一、让调试器停在你的代码触发位置

调试时异常跳转到系统预定义代码,是因为调试器默认会停在异常抛出的实际位置(即系统库代码里)。要让它停在你自己的代码调用处,按以下步骤设置:

  1. 打开「异常设置」窗口:按下快捷键 Ctrl+Alt+E,或点击顶部菜单栏「调试」→「Windows」→「异常设置」
  2. 在列表中找到「Common Language Runtime Exceptions」→「System.ArgumentOutOfRangeException」
  3. 只勾选「用户未处理」列的复选框,取消「抛出」列的勾选
  4. 重新启动调试,异常触发时就会停在你代码中调用Substring的位置(即frmMain.cs第487行)

二、解决ArgumentOutOfRangeException异常本身

从错误栈可以明确,异常是在frmMain.cs第487行调用String.Substring(int startIndex)时触发的,原因是传入的startIndex值大于目标字符串的长度。

修复步骤:

  1. 打开frmMain.cs定位到第487行,查看调用Substring的代码
  2. 检查传入的startIndex参数值,以及对应的目标字符串的Length属性
  3. 确保startIndex满足 0 ≤ startIndex < 字符串.Length 的条件(字符串索引从0开始)
  4. 可增加前置判断避免异常:
string targetStr = ...; // 你的目标字符串
int startIdx = ...; // 要传入的起始索引

if (startIdx >= 0 && startIdx < targetStr.Length)
{
    string result = targetStr.Substring(startIdx);
    // 后续逻辑
}
else
{
    // 处理索引无效的情况,比如输出日志、提示用户等
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:39:53