[P1] JSON解析错误被静默吞掉 - 建议添加错误日志 #2

Open
opened 2026-01-13 16:06:57 +08:00 by tangweijie · 1 comment
Owner

问题描述

QuestionForm.vue 中解析显示条件 JSON 时,使用了空的 catch 块,会静默吞掉解析错误,导致问题难以排查。

代码位置: frontend/src/views/prison/question/QuestionForm.vue:659-667

if (data.displayCondition) {
  try {
    const obj = JSON.parse(data.displayCondition)
    conditionForm.enabled = true
    conditionForm.field = obj.field || ''
    conditionForm.operator = obj.operator || '='
    conditionForm.value = obj.value || ''
  } catch {}  // 空的 catch 块 - 静默失败!
}

影响

  • 如果数据库中的 displayCondition 数据格式异常,无法得知错误原因
  • 开发调试时无法定位问题
  • 可能导致数据损坏后无法修复

建议修复

if (data.displayCondition) {
  try {
    const obj = JSON.parse(data.displayCondition)
    conditionForm.enabled = true
    conditionForm.field = obj.field || ''
    conditionForm.operator = obj.operator || '='
    conditionForm.value = obj.value || ''
  } catch (e) {
    console.error('解析显示条件失败:', e)
    message.warning('显示条件格式有误,已重置为默认值')
    // 可选:自动清空损坏的数据
    // data.displayCondition = undefined
  }
}

同样的问题存在于 parseOptions 函数(第 548-556 行),虽然有 return [] 但建议添加日志。

优先级

P1 - 中

标签

bug frontend error-handling

## 问题描述 在 `QuestionForm.vue` 中解析显示条件 JSON 时,使用了空的 catch 块,会静默吞掉解析错误,导致问题难以排查。 **代码位置**: `frontend/src/views/prison/question/QuestionForm.vue:659-667` ```typescript if (data.displayCondition) { try { const obj = JSON.parse(data.displayCondition) conditionForm.enabled = true conditionForm.field = obj.field || '' conditionForm.operator = obj.operator || '=' conditionForm.value = obj.value || '' } catch {} // 空的 catch 块 - 静默失败! } ``` ## 影响 - 如果数据库中的 displayCondition 数据格式异常,无法得知错误原因 - 开发调试时无法定位问题 - 可能导致数据损坏后无法修复 ## 建议修复 ```typescript if (data.displayCondition) { try { const obj = JSON.parse(data.displayCondition) conditionForm.enabled = true conditionForm.field = obj.field || '' conditionForm.operator = obj.operator || '=' conditionForm.value = obj.value || '' } catch (e) { console.error('解析显示条件失败:', e) message.warning('显示条件格式有误,已重置为默认值') // 可选:自动清空损坏的数据 // data.displayCondition = undefined } } ``` 同样的问题存在于 `parseOptions` 函数(第 548-556 行),虽然有 return [] 但建议添加日志。 ## 优先级 P1 - 中 ## 标签 bug frontend error-handling
Author
Owner

状态更新

优先级: P1 - 中

当前状态: 尚未修复

建议在后续迭代中处理。


此 Issue 由代码审查生成,记录在 Gitea 以便跟踪。

## 状态更新 **优先级**: P1 - 中 **当前状态**: 尚未修复 建议在后续迭代中处理。 --- *此 Issue 由代码审查生成,记录在 Gitea 以便跟踪。*
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: tangweijie/xlcp-frontend#2
No description provided.