reactjs - 使用 Java 和 React 捕获 SQLExceptions
问题描述
我有一个带有 React 前端、Spring Boot 后端和 Oracle DB 的应用程序。我做了一个触发器,它引发了一个带有自定义编号的自定义异常。出于某种原因,我无法在 React 中显示其消息 - 只有该请求失败,状态码为 500。我该怎么做?出于某种原因,当我尝试将 SQLException 添加到 catch 块时,它说它不能从任何地方抛出。道实现:
@Override
public void delete(Integer id) {
SqlParameterSource parameters = new MapSqlParameterSource().addValue("ID_SETTINGS", id);
try {
namedParameterJdbcTemplate.update(DELETE_SQL, parameters);
} catch (DataAccessException e) {
log.error(e.getMessage());
throw new RuntimeException("Error during deletion: " + e.getMessage());
}
}
控制器:
@DeleteMapping("/{id}")
public ResponseEntity<?> delete(@PathVariable("id") Integer id) {
log.info("Request for delete settings {}", id);
Settings settings = settingsService.findById(id);
settingsService.delete(settings.getId());
log.info("SUCCESS: {} deleted.", settings.getId());
return new ResponseEntity<>(settings.getId() + " deleted successfully.", HttpStatus.NO_CONTENT);
}
前面的 ApiSetvice:
delete(id) {
return axios.delete(`${BASE_URL}/${id}`, ApiService.getAuthHeader());
}
反应中的按钮:
<Button
variant='primary'
onClick={() => {
globalProps
.deleteItem()
.then(() => {
table.draw();
})
.catch((e) => {
console.log(e);
this.setState({ error: e.message });
this.setState({ showModalBatch: true });
});
this.props.toggleShowDelete();
}}
>
Удалить
</Button>
删除项目:
deleteItem = async () => {
await SettingsApiService.delete(this.state.selectedId);
};
我如何正确处理这里的 oracle 异常?
解决方案
推荐阅读
- php - Laravel dom 爬虫在 javascript 中搜索 img
- php - 从用户的 IP 填充数据库中的纬度和经度
- angular - 如何在 Angular 反应式表单中填充选择表单字段?
- javascript - 如何在 jwplayer 中禁用播放列表最后一个视频的 Next Up Card
- java - 我如何使用 Collections.sort 打印单词集合并打印单词的第一个字母
- javascript - 百度的 echarts - 填满两行之间的空间
- java - 从文本文件中获取所有单词(Java)
- c - 有人问我这段代码有什么问题
- javascript - 带有 React 的 Ant Design,菜单无法在移动设备上呈现
- python-3.x - 我们是否可以使用 csv 文件将算法的一部分连接到另一部分