Java ExceptionHandler不处理异常
我有例外:Java ExceptionHandler不处理异常,java,exception,kotlin,jwt,Java,Exception,Kotlin,Jwt,我有例外: open class CustomException(open val code: String, override val message: String) : RuntimeException(message) 其他自定义异常继承自它: class DataAccessException(override val code: String, override val message: String) : CustomException(code, message) class
open class CustomException(open val code: String, override val message: String) : RuntimeException(message)
其他自定义异常继承自它:
class DataAccessException(override val code: String, override val message: String) : CustomException(code, message)
class NoMatchingValueException(override val code: String, override val message: String) : CustomException(code, message)
class ApiException(override val code: String, override val message: String) : CustomException(code, message)
class JwtAuthenticationException(override val code: String, override val message: String) : CustomException(code, message)
ExceptionHandler
处理它们。现在看起来是这样的:
@ExceptionHandler(value = [DataAccessException::class])
fun handle(exception: DataAccessException): ResponseEntity<AbstractDto> =
ResponseEntity.ok(AbstractDto(exception.code, exception.message))
@ExceptionHandler(value = [NoMatchingValueException::class])
fun handle(exception: NoMatchingValueException): ResponseEntity<AbstractDto> =
ResponseEntity.ok(AbstractDto(exception.code, exception.message))
@ExceptionHandler(value = [ApiException::class])
fun handle(exception: ApiException): ResponseEntity<AbstractDto> =
ResponseEntity.ok(AbstractDto(exception.code, exception.message))
@ExceptionHandler(value = [JwtAuthenticationException::class])
fun handle(exception: JwtAuthenticationException): ResponseEntity<AbstractDto> =
ResponseEntity
.status(HttpStatus.OK)
.body(AbstractDto(StatusCode.UNAUTHORIZED.name, exception.message!!))
这样,控制台中有3个stacktraces日志:
JwtAuthenticationException: JWT token expired.
...
ERROR 22059 --- [nio-8081-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] threw exception
JwtAuthenticationException: JWT token expired.
...
ERROR 22059 --- [nio-8081-exec-1] o.a.c.c.C.[Tomcat].[localhost] : Exception Processing ErrorPage[errorCode=0, location=/error]
JwtAuthenticationException: JWT token expired.
仅前端reseives
HTTP Status 500 – Internal Server Error
请告诉我,怎么了
p.S.完整堆栈跟踪:
xpendence.exceptions.JwtAuthenticationException:JWT令牌
期满。在
ru.xpendence.config.security.jwt.JwtTokenProvider.validate(JwtTokenProvider.java:84)
~[classes/:na]at
ru.xpendence.config.security.jwt.JwtTokenFilter.doFilter(JwtTokenFilter.java:34)
~[classes/:na]at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
~[spring-security-web-5.1.5.RELEASE.jar:5.1.5.RELEASE]
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
~[spring-web-5.1.7.RELEASE.jar:5.1.7.RELEASE]at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
~[tomcat-embed-core-9.0.19.jar:9.0.19]at
org.apache.catalina.core.StandardContextValve.invoke(StandardContext
HTTP Status 500 – Internal Server Error