Skip to content

ExcelGenerator.WriteToFile discards exceptions and does not close the workbook #6

Description

@PengjiangXiao

问题描述

ExcelGenerator.WriteToFile 捕获了所有异常,但只返回一个 WriteStatus

catch (Exception)
{
    return WriteStatus.UnknownError;
}

这会让调用者无法获得真正的异常原因。另外,方法创建的 NPOI workbook 在成功和失败路径中都没有明确执行 CloseDispose

确认环境:

  • 分支:master
  • 提交:a736f3b850bb454268093b8c1a409627649393e8
  • 文件:EasyDbc/Generators/ExcelGenerator.cs

实际结果

空引用、无效数据、NPOI 写入错误等不同故障都只表现为:

WriteStatus.UnknownError

调用者无法显示有用的错误信息,也无法区分数据问题和文件系统问题。

重复导出时,未关闭的 workbook 还可能增加内存和临时资源占用。

期望结果

调用者应能获得原始异常或结构化错误详情,并且 workbook 无论成功或失败都应被关闭。

建议修复方式

可以采用以下任一种方式:

  1. 让原始异常向上传递。
  2. 返回包含 WriteStatusException 的结果对象。
  3. 提供 TryWrite(..., out Exception exception)
  4. 在保持现有 API 的情况下记录最近一次异常。

同时应在 finally 中关闭 workbook:

finally
{
    workbook?.Close();
    workbook = null;
}

关闭 workbook 时产生的异常不应覆盖原始写入异常。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions