问题描述
ExcelGenerator.WriteToFile 捕获了所有异常,但只返回一个 WriteStatus:
catch (Exception)
{
return WriteStatus.UnknownError;
}
这会让调用者无法获得真正的异常原因。另外,方法创建的 NPOI workbook 在成功和失败路径中都没有明确执行 Close 或 Dispose。
确认环境:
- 分支:
master
- 提交:
a736f3b850bb454268093b8c1a409627649393e8
- 文件:
EasyDbc/Generators/ExcelGenerator.cs
实际结果
空引用、无效数据、NPOI 写入错误等不同故障都只表现为:
调用者无法显示有用的错误信息,也无法区分数据问题和文件系统问题。
重复导出时,未关闭的 workbook 还可能增加内存和临时资源占用。
期望结果
调用者应能获得原始异常或结构化错误详情,并且 workbook 无论成功或失败都应被关闭。
建议修复方式
可以采用以下任一种方式:
- 让原始异常向上传递。
- 返回包含
WriteStatus 和 Exception 的结果对象。
- 提供
TryWrite(..., out Exception exception)。
- 在保持现有 API 的情况下记录最近一次异常。
同时应在 finally 中关闭 workbook:
finally
{
workbook?.Close();
workbook = null;
}
关闭 workbook 时产生的异常不应覆盖原始写入异常。
问题描述
ExcelGenerator.WriteToFile捕获了所有异常,但只返回一个WriteStatus:这会让调用者无法获得真正的异常原因。另外,方法创建的 NPOI workbook 在成功和失败路径中都没有明确执行
Close或Dispose。确认环境:
mastera736f3b850bb454268093b8c1a409627649393e8EasyDbc/Generators/ExcelGenerator.cs实际结果
空引用、无效数据、NPOI 写入错误等不同故障都只表现为:
调用者无法显示有用的错误信息,也无法区分数据问题和文件系统问题。
重复导出时,未关闭的 workbook 还可能增加内存和临时资源占用。
期望结果
调用者应能获得原始异常或结构化错误详情,并且 workbook 无论成功或失败都应被关闭。
建议修复方式
可以采用以下任一种方式:
WriteStatus和Exception的结果对象。TryWrite(..., out Exception exception)。同时应在
finally中关闭 workbook:关闭 workbook 时产生的异常不应覆盖原始写入异常。