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 时产生的异常不应覆盖原始写入异常。

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