kiftd-source
kiftd-source copied to clipboard
很多地方处理异常都有问题

等等,这种处理异常的方式有问题。 1、当出现问题的时候,前端虽然收到了反馈,你后端把这个异常给吞了,并且更加严重的是,没有打印错误日志,这个问题很严重,当我们出现问题的时候,会无处排查 2、当你把错误吞调的时候,就无法使用spring事务框架进行数据回滚了。
推荐解决方案 自己继承RuntimeException 实现一个ServiceException。
public class ServiceException extends RuntimeException {
private Object data;
public ServiceException(String message) {
super(message);
}
public ServiceException(String message, Object data) {
super(message);
this.data = data;
}
public ServiceException(String message, Throwable cause) {
super(message, cause);
}
public Object getData() {
return this.data;
}
public void setData(Object data) {
this.data = data;
}
}
然后实现WebMvcConfigurer 进行统一异常处理。 具体可以参考这篇博文 https://www.cnblogs.com/gdwkong/p/8969963.html
正确的写法是
try
{
//do something
}
catch(Exception e)
{
//do something handle the exception
log.error("do something error",e);
//返回到前端的内容会根据你实现的WebMvcConfigurer 类封装成你想要的形式
throw new ServiceException("UPLOAD ERROR");
}
kiftd的源代码中确实还存在很多设计缺陷,您提到的异常处理就是其中一类。当初很多异常都是只考虑了它对前端用户产生的影响,因此只做了基本的逻辑反馈。您给出的建议已经阅读,在后续优化代码(如果有时间的话)时会作为参考,不过,一般而言这一过程可能需要很长的时间了。 再次感谢您的反馈,这是kiftd不断进步的最佳动力。
@81519434 @KOHGYLW 建议两位可以达成一个共识,就是 @81519434 可以 fork 一份进行相应的改进,完成后 PR 到 @KOHGYLW ,而主干在开发过程中尽量保持不再引入类似的使用。