Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring引导jar和intellij idea中错误处理的不同行为_Java_Spring_Spring Boot_Error Handling - Fatal编程技术网

Java spring引导jar和intellij idea中错误处理的不同行为

Java spring引导jar和intellij idea中错误处理的不同行为,java,spring,spring-boot,error-handling,Java,Spring,Spring Boot,Error Handling,我用spring boot开发了一个应用程序 应用程序包含一个全局异常处理程序,当我从Intellij IDEA运行(或调试)应用程序时,该处理程序工作正常 但当我执行最后一个jar(由maven clean install创建)时,错误处理程序不起作用(以及向客户机提供所需信息的所有编程异常)已被替换为API中的whitepage 500错误或500错误响应 这是我想要传递给客户端的示例结果(当我使用IDE运行应用程序时,它将被发送给客户端) 这是从java-jarapp返回的消息: {

我用spring boot开发了一个应用程序

应用程序包含一个全局异常处理程序,当我从Intellij IDEA运行(或调试)应用程序时,该处理程序工作正常

但当我执行最后一个jar(由maven clean install创建)时,错误处理程序不起作用(以及向客户机提供所需信息的所有编程异常)已被替换为API中的whitepage 500错误或500错误响应

这是我想要传递给客户端的示例结果(当我使用IDE运行应用程序时,它将被发送给客户端)

这是从
java-jar
app返回的消息:

{
    "timestamp": "2019-10-16T15:17:20.337+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No message available",
    "path": "/login"
}
这是错误处理程序:

@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
@RequiredArgsConstructor
public class BaseBusinessExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(BaseBusinessException.class)
    public ResponseEntity<Object> handleBaseBusinessException(
        final BaseBusinessException ex,
        final HttpServletRequest request
    ) {
        ApiError apiError = new ApiError(ex.getHttpStatus());
        String acceptLanguage = request.getHeader("Accept-Language");
        if (Empty.isNotEmpty(acceptLanguage)) {
            Locale locale = new Locale(acceptLanguage);
            apiError.setLocalizedMessage(initializeMessage(ex.getErrorCode(), ex.getMessageArgs(), locale));
        }
        apiError.setCode(ex.getErrorCode());
        apiError.setMessage(initializeMessage(ex.getErrorCode(), ex.getMessageArgs(), Locale.getDefault()));
        if (Empty.isNotEmpty(ex.getMessageArgs())) {
            Map<String, Object> meta = new HashMap<>(ex.getMessageArgs());
            apiError.setMeta(meta);
        }
        return buildResponseEntity(apiError);
    }

有人能帮我解决这个问题吗?

错误到底是什么,错误处理是什么样子的?据我们所知,您在IDE的类路径上使用了一些在外部没有的库it@Stultuske我发现,若代码是用java-jar运行的,在异常过程中会抛出一些异常,所以我不知道这个问题是否更有效。因为一个代码有两个不同的结果,这是我的主要问题OK,所以您的处理程序只处理特定类型的异常,而抛出另一种类型的异常。
@Order(Ordered.HIGHEST_PRECEDENCE)
@ControllerAdvice
@RequiredArgsConstructor
public class BaseBusinessExceptionHandler extends ResponseEntityExceptionHandler {

    @ExceptionHandler(BaseBusinessException.class)
    public ResponseEntity<Object> handleBaseBusinessException(
        final BaseBusinessException ex,
        final HttpServletRequest request
    ) {
        ApiError apiError = new ApiError(ex.getHttpStatus());
        String acceptLanguage = request.getHeader("Accept-Language");
        if (Empty.isNotEmpty(acceptLanguage)) {
            Locale locale = new Locale(acceptLanguage);
            apiError.setLocalizedMessage(initializeMessage(ex.getErrorCode(), ex.getMessageArgs(), locale));
        }
        apiError.setCode(ex.getErrorCode());
        apiError.setMessage(initializeMessage(ex.getErrorCode(), ex.getMessageArgs(), Locale.getDefault()));
        if (Empty.isNotEmpty(ex.getMessageArgs())) {
            Map<String, Object> meta = new HashMap<>(ex.getMessageArgs());
            apiError.setMeta(meta);
        }
        return buildResponseEntity(apiError);
    }
        User user = userRepository.findOneByUsername(arg.getUsername());
        if (user == null) {
            throw new UserNotFoundException(arg.getUsername());
        }