问题描述
ExcelParser 的三个解析入口调用了 createWorkbookFromPath(path, out workbook),但没有检查该方法返回的 ExcelParserState。
受影响的入口包括:
ParseFirstSheetFromPath
ParseSheetNameFromPath
ParseSheetIndexFromPath
我在当前 master 分支中确认了该问题:
- 提交:
a736f3b850bb454268093b8c1a409627649393e8
- 文件:
EasyDbc/Parsers/ExcelParser.cs
复现步骤
- 调用
ParseFirstSheetFromPath。
- 传入一个不存在的
.xlsx 文件路径,或者传入无法打开的工作簿。
createWorkbookFromPath 返回具体错误状态,并将 workbook 保持为 null。
- 外层代码仍继续调用:
ISheet sheet = workbook.GetSheetAt(0);
实际结果
后续代码触发空引用异常,然后被外层 catch 转换为:
ExcelParserState.UnknownError
原本具体的 PathError、FormatError 或 ReadPermissionError 因此丢失。
期望结果
三个解析入口都应检查并直接返回 createWorkbookFromPath 的状态,不应在打开失败后继续访问 workbook。
建议修复方式
ExcelParserState workbookState =
createWorkbookFromPath(path, out workbook);
问题描述
ExcelParser的三个解析入口调用了createWorkbookFromPath(path, out workbook),但没有检查该方法返回的ExcelParserState。受影响的入口包括:
ParseFirstSheetFromPathParseSheetNameFromPathParseSheetIndexFromPath我在当前
master分支中确认了该问题:a736f3b850bb454268093b8c1a409627649393e8EasyDbc/Parsers/ExcelParser.cs复现步骤
ParseFirstSheetFromPath。.xlsx文件路径,或者传入无法打开的工作簿。createWorkbookFromPath返回具体错误状态,并将workbook保持为null。实际结果
后续代码触发空引用异常,然后被外层
catch转换为:原本具体的
PathError、FormatError或ReadPermissionError因此丢失。期望结果
三个解析入口都应检查并直接返回
createWorkbookFromPath的状态,不应在打开失败后继续访问workbook。建议修复方式