实现一个API,它生成八位字节流,但如果ID无效,我想给出内容类型为JSON的错误响应

我的控制器是这样的

@RequestMapping(value = "/templates/{template_id}/preview", method = RequestMethod.GET,
            produces = {MediaType.APPLICATION_OCTET_STREAM_VALUE,MediaType.APPLICATION_JSON_UTF8_VALUE})
    @Versions(supported = {1})
    public ResponseEntity<InputStreamResource> getWatermarkTemplatePreview(@PathVariable("template_id") String templateId) throws IOException,
            MimeTypeException, DRMException {

        InputStream outputFileStream = drmService.getTemplatePreviewImage(templateId);

        // Adding mime type to file
        MimeType mimeType = MimeTypes.getDefaultMimeTypes().forName(MediaType.IMAGE_PNG_VALUE);

        return ResponseEntity.ok()
                .contentType(MediaType.valueOf("image/svg+xml"))
                .header("Content-Disposition", "attachment; filename=" + "preview" + ".svg")
                .body(new InputStreamResource(outputFileStream));
    }

如果我给这样的电子邮件ID http://localhost:8080/acpsserver/v1/drm/watermarks/templates/sdfrgtser/preview

我应该用JSON给erro

但是我得到 Internal Server Error http: 500

以下是我的堆栈跟踪

com.ab.acps.sharedtypes.drm.DRMException:com.ab.acpsserver.service.drm.WatermarkTemplateHelper.getTemplateById(WatermarkTemplateHelper.java:67)中的水印模板ID无效〜[simple-drm-service-1.0.jar: ?com.ab.acpsserver.service.drm.WatermarkTemplateHelper.getTemplatePreviewImage(WatermarkTemplateHelper.java:75)〜[simple-drm-service-1.0.jar:?] at com.ab.acpsserver.service.drm.SimpleDRMService . getTemplatePreviewImage(SimpleDRMService.java:426)〜[simple-drm-service-1.0.jar:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[?:1.8.0_92] at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)〜[?:1.8.0_92] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜[?:1.8.0_92] at java.lang.reflect.Method.invoke(Method .java:498)〜[?:1.8.0_92] org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)〜[spring-aop-4.3.2.RELEASE.jar:4.3.2 . 发布在org.springframework.aop.f上orme.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)〜[spring] -aop-4.3.2.RELEASE.jar:?] org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133)〜[spring-aop-4.3.2.RELEASE.jar:4.3.2 . 在org.springframework.aop.framework上的org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121)〜[spring-aop-4.3.2.RELEASE.jar:4.3.2.RELEASE]中的RELEASE] . ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)〜[spring-aop-4.3.2.RELEASE.jar:?] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)〜[spring-aop com.sab.acpsserver.drm.DRMService.getTemplatePreviewIm中的com.sun.proxy上的-4.3.2.RELEASE.jar:?] . $ Proxy139.getTemplatePreviewImage(未知来源)〜[?:?]年龄(DRMService.java:157)〜[DRMService.class:?] at com.ab.acpsserver.drm.watermark.WatermarkController.getWatermarkTemplatePreview(WatermarkController.java:221)〜[WatermarkController.class:?] at sun.reflect . Native.MethodAccessorImpl.invoke0(Native Method)〜[?:1.8.0_92] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[?:1.8.0_92] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java :org.springframework.web.method.support.InvocableHandlerMethod.doInvoke上java.lang.reflect.Method.invoke(Method.java:498)〜[?:1.8.0_92]的〜43:〜[?:1.8.0_92] (InvocableHandlerMethod.java:221)〜[spring-web-4.3.2.RELEASE.jar:?] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)〜[spring-web- 4.3.2.RELEASE.jar:?]在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)〜[spring-webmvc-4.3.2.RELEASE.jar:4 .3.2.RELEASE]在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)〜[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]在org.springframework的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)〜[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE] . org.springframework.web.servlet.DispatcherServlet.doDispatch中的web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)〜[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE] (DispatcherServlet.java:963)〜[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE] org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)〜[spring- webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE]在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)~ [spring-webmvc-4.3.2.RELEASE.jar:4.3 .2.RELEASE]在org.spr ingframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)〜[spring-webmvc-4.3.2.RELEASE.jar:4.3.2.RELEASE],位于javax.servlet.http.HttpServlet.service(HttpServlet.java) :622)〜[servlet-api.jar:?] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)〜[spring-webmvc-4.3.2.RELEASE.jar:4.3.2 . 发布在javax.servlet.http.HttpServlet.service(HttpServlet.java:729)〜[servlet-api.jar:?] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)〜[ catalina.jar:8.0.24] atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)〜 [tomcat-websocket.jar:8.0.24] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[catalina.jar:8.0.24] at org.apache.catalina.core.ApplicationFilterChain .doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)〜[spring-boot-1.4.0 . RELEASE.jar:?] org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] at org.apache.catalina.core . ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)~ [catalina.jar:8.0.24] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at at org.spri orframe.springframework.web.filter.OncePerRequestFilter上的ngframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:105)〜[spring-boot-actuator-1.4.0.RELEASE.jar:1.4.0.RELEASE] .doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)~ [catalina.jar: 8.0.24] org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy . java:317)〜[spring-security-web-4.1.1.RELEASE.jar:?] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)~ [spring-security -web-4.1.1.RELEASE.jar:4.1.1.RELEASE]在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)〜[spring-security-web-在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar :org.springframework上的org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)〜[spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE] .security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?] at org.springframework.security.web.session.SessionManagementFilter.doFilter( SessionManagementFilter.java:137)~ [spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜 [spring-security-web-4.1.1.RELEASE.jar:?]在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)〜[spring-security-web-4.1.1 . RELEASE.jar:4.1.1.R ELEASE] org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?] at org.springframework.security.web . servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)〜[spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE] org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy) .java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?] org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)〜[spring-security- web-4.1.1.RELEASE.jar:?]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?在Org.springf的org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:134)〜[spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE] orme.springframework.security.web.authentication.logout.LogoutFilter中的ramework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?] .doFilter(LogoutFilter.java:121)〜[spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java: 331)〜[spring-security-web-4.1.1.RELEASE.jar:?] org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66)〜[spring-security-web-4.1 .lELEASE.jar:?]在org.springframework.security的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] .web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?] atorg.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)〜[spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE] org.springframework.security.web .FlterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar:?] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal( webAsyncManagerIntegrationFilter.java:56)〜[spring-security-web-4.1.1.RELEASE.jar:4.1.1.RELEASE]在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring -web-4.3.2.RELEASE.jar:?]在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:331)〜[spring-security-web-4.1.1.RELEASE.jar: ?org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)〜[spring-security-web-4.1.1.RELEASE.jar:?] at org.springframework.security.web.FilterC hainProxy.doFilter(FilterChainProxy.java:177)〜[spring-security-web-4.1.1.RELEASE.jar:?] org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)〜[spring -web-4.3.2.RELEASE.jar:?] org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)〜[spring-web-4.3.2.RELEASE.jar:?] at org orap.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)〜[catalina . jar:8.0.24] org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)〜[spring-web-4.3.2.RELEASE.jar:?] at org.springframework.web.filter . OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)~ [catalina.jar :8.0.24]在org.apache . catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)〜[spring-web-4.3 .2.ELELASE.jar:?] org.apring.workCatalina的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)~ [catalina.jar:8.0.24] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0 . 24]在org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)〜[spring-web-4.3.2.RELEASE.jar:?] org.springframework.web.filter.OncePerRequestFilter.doFilter( OncePerRequestFilter.java:107)~ [spring-web-4.3.2.RELEASE.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)~ [catalina.jar: 8.0.24] org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter . java:164)〜[spring-session-1.2.2.RELEASE.jar:?] org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)〜[spring-session-1.2.2 .rELEASE.jar:?] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[catalina.jar:8.0.24] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:206)〜[catalina.jar:8.0.24] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)~ [spring-web-4.3.2.RELEASE.jar:?] at org.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appli cationFilterChain.java:239)~ [catalina.jar:8.0.24]在org.springframework的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] . org.springframework.web.filter.OncePerRequestFilter.doFilter中的boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:107)〜[spring-boot-actuator-1.4.0.RELEASE.jar:1.4.0.RELEASE] (OncePerRequestFilter.java:107)〜[spring-web-4.3.2.RELEASE.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[catalina.jar:8.0 . 24] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)~ [catalina.jar:8.0.24] at com.ab.acpsserver.common.SecurityFilter.doFilter(SecurityFilter.java:31) 〜[SecurityFilter.class:?]在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)〜[catalina.jar:8.0.24] atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)〜[catalina.jar:8.0.24] at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:119)[ spring-boot-1.4.0.RELEASE.jar:?] org.springframework.boot.web.support.ErrorPageFilter.access $ 000(ErrorPageFilter.java:61)[spring-boot-1.4.0.RELEASE.jar:? ] org.springframework.boot.web.support.ErrorPageFilter $ 1.doFilterInternal(ErrorPageFilter.java:94)[spring-boot-1.4.0.RELEASE.jar:?] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107)[spring-web-4.3.2.RELEASE.jar:?] at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:112)[spring-boot-1.4 . 0.RELEASE.jar:?] org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)[catalina.jar:8.0.24] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain .java:206)[catalina.jar:8.0.24]在org.apac he.logging.log4j.web.Log4jServletFilter.doFilter(Log4jServletFilter.java:71)[log4j-web-2.5.jar:2.5] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)[catalina .jar:8.0.24] org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)[catalina.jar:8.0.24] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve . java:219)[catalina.jar:8.0.24] org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)[catalina.jar:8.0.24] at org.apache.catalina.authenticator . AuthenticatorBase.invoke(AuthenticatorBase.java:502)[catalina.jar:8.0.24] org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)[catalina.jar:8.0.24] at org . apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)[catalina.jar:8.0.24] at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)[catalina.jar:8.0 .24]在org.apac he.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)[catalina.jar:8.0.24] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)[catalina.jar:8.0 .24]在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)[tomcat-coyote.jar:8.0.24] at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java: 668)[tomcat-coyote.jar:8.0.24] org.apache.tomcat.util.net.AprEndpoint $ SocketProcessor.doRun(AprEndpoint.java:2503)[tomcat-coyote.jar:8.0.24] at org . 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[? :1.8.0_92] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[?:1.8.0_92] at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread . java:61)[tomcat-util.jar:8.0.24] at java.lang.Thread.run(Thr ead.java:745)[?:1.8.0_92]