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

如何修复System.Private.CoreLib.dll中DirectoryNotFoundException异常

问题现象

每次运行WinForms应用程序时,Visual Studio中都会弹出异常提示,但应用可完全正常运行,代码无编译报错,预期生成的文件可正常创建,且内容写入正确。
涉及文件目录操作的代码片段如下:

private void button1_Click(object sender, EventArgs e)
{
    calcerPasswordCorrect cpc = new calcerPasswordCorrect();
    cpc.ShowDialog();

    string filepath = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
    filepath = filepath + @"\test.txt";
    TextWriter sw = new StreamWriter(filepath);
    sw.Write("Input: " + textBox4.Text);
    sw.Close();
}
原因说明

该提示属于Visual Studio的*首次异常(First-Chance Exception)*提醒:

  • 这类异常是程序运行过程中在系统或.NET框架底层触发、且已经被底层逻辑自行处理完成的异常,不会向上传递到业务代码层,因此不会导致程序崩溃、功能执行异常。
  • 该场景下触发的异常,通常是文件创建写入流程中,系统做文件存在性校验、访问权限预检查时抛出的内部分支异常,异常触发后底层会自动走文件创建、写入的正常逻辑分支,完全不影响最终执行结果。
可选处理方案
  • 若不需要看到这类提示,可在Visual Studio中调整调试配置:打开顶部菜单栏「调试」-「窗口」-「异常设置」,取消对应异常类型的「引发时中断」勾选即可。
  • 可对现有文件操作代码做规范化优化,减少不必要的内部异常触发,同时规避资源泄漏风险,优化后代码如下:
private void button1_Click(object sender, EventArgs e)
{
    calcerPasswordCorrect cpc = new calcerPasswordCorrect();
    cpc.ShowDialog();
    cpc.Dispose(); // 释放对话框资源

    // 用Path.Combine拼接路径,规避手动拼接路径分隔符的兼容问题
    string filepath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyMusic), "test.txt");
    // using语句自动释放流资源,无需手动调用Close,异常场景下也不会出现资源泄漏
    using (TextWriter sw = new StreamWriter(filepath, false))
    {
        sw.Write("Input: " + textBox4.Text);
    }
}

注意:即使完成代码优化,也可能存在其他系统层面触发的首次异常,只要程序功能运行正常、没有未捕获的异常抛出,这类提示本身不代表代码存在错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:21:43