Android 处理来自客户端的Rest sql异常
我正在使用spring boot和android 我正在尝试使用post创建用户。对于积极的情况,它可以正常工作,但在消极的情况下,例如主键冲突,服务器抛出sql异常Android 处理来自客户端的Rest sql异常,android,spring-boot,exception,retrofit2,Android,Spring Boot,Exception,Retrofit2,我正在使用spring boot和android 我正在尝试使用post创建用户。对于积极的情况,它可以正常工作,但在消极的情况下,例如主键冲突,服务器抛出sql异常 我想显示错误消息“客户端用户已存在”这是一个验证检查场景,不是异常处理案例。您需要添加验证检查: ->首先检查数据库中是否存在用户,如果存在则抛出错误 当我们从用户那里获得输入时,我们添加了验证检查。 当代码或受信任的客户机中可能出现错误时(如不涉及用户输入的UI应用程序逻辑),我们会执行异常处理 用于处理异常并向客户端抛出一些消
我想显示错误消息“客户端用户已存在”这是一个验证检查场景,不是异常处理案例。您需要添加验证检查:
->首先检查数据库中是否存在用户,如果存在则抛出错误 当我们从用户那里获得输入时,我们添加了验证检查。 当代码或受信任的客户机中可能出现错误时(如不涉及用户输入的UI应用程序逻辑),我们会执行异常处理 用于处理异常并向客户端抛出一些消息。我们需要使用
@ControllerAdvice
:教程:
Spring文档:这只是基于我在生产中的代码的模型(很抱歉使用Kotlin,您可以将其重新格式化为Java):
希望它有帮助重新编写,但需要来自原始询问者的进一步代码来提供帮助。我没有实现我只是实现了正常的post方法我不知道怎么做,我只是想知道怎么做?我尝试了这个方法,但在使用rest api客户端(如postman或失眠)时,消息字段是空的,如果消息显示,然后检查您的改装代码
data class Response @JsonCreator constructor (
var message: String? = "",
var success: Boolean = false,
var data: Any? = null
)
@PostMapping
fun createUser(@ResponseBody newUser): ResponseEntity<Response> {
return ResponseEntity(
Response(
"Create user: ",
true,
this.userService.createUser(newUser)
),
HttpStatus.OK
)
}
class ResourceNotFoundException: RuntimeException {
var statusCode: Int? = null
constructor(errorMessage: String, statusCode:Int): super(errorMessage) {
this.statusCode = statusCode
}
constructor(errorMessage: String, cause: Throwable, statusCode: Int): super(errorMessage, cause) {
this.statusCode = statusCode
}
}
fun createUser(newUser: UserEntity): Boolean { // can be replaced by any response
try {
this.userRepository.save(newUser)
} catch (e: DuplicateKeyException) {
throw ResourceNotFoundException(
"Client user already exists", // custom http message
"404" // custom http status
)
}
return true
}
showToast(response.message)