java - 如何在 Spring Boot 中抛出外部端点抛出的相同异常

标签 java spring rest spring-boot exception

我正在访问外部 API,并且希望获得图像作为响应 (byte[])。我连接到此端点的方法如下所示:

 private byte[] retrieveImage(String uri) {
     byte[] imageBytes = null;
     try {
            URL url = new URL(uri);
            BufferedImage bufferedImage = ImageIO.read(url);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(image, "png", baos);
            imageBytes = baos.toByteArray();
        } catch (Exception ex) {
            throw new ImageNotReadException(ex.getLocalizedMessage());
        }
        return imageBytes;
    }

事实证明,如果我将错误的参数传递给目标端点,我会收到以下错误消息: enter image description here

所以基本上我想抛出上面相同的错误,但我也想抛出一个ImageNotReadException (java.lang. lang.IllegalArgumentException: image == null! ),以防程序无法读取图像 (byte[])。所以基本上,我的方法 private byte[]retrieveImage(String uri) 必须抛出读取图像异常和端点响应异常。

有什么建议吗? 感谢您的帮助!

最佳答案

正如我所评论的,请参阅下面的选项

private Response retrieveImage(String uri) {
     byte[] imageBytes = null;
Response r=new Response();
     try {
            URL url = new URL(uri);
            BufferedImage bufferedImage = ImageIO.read(url);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(image, "png", baos);
            imageBytes = baos.toByteArray();
            r.setImage(imageBytes);
            r.setStatus(1);
        } catch (Exception ex) {
            r.setStatus(0);
        }
        return r;
    }

回应:

class Response{ 
String status;
byte[] image;

//getters setters
}

或者:

  private Response retrieveImage(String uri)throws CustomException {
         byte[] imageBytes = null;
         try {
                URL url = new URL(uri);
                BufferedImage bufferedImage = ImageIO.read(url);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                ImageIO.write(image, "png", baos);
                imageBytes = baos.toByteArray();
            } catch (Exception ex) {
                throw new CustomException(ex.getLocalizedMessage());
            }
            return imageBytes;
        }

关于java - 如何在 Spring Boot 中抛出外部端点抛出的相同异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53862094/

相关文章:

java - 使用 nginx 服务器作为 glassfish 服务器的代理来加载静态内容

java - 原始类型的 transient final 和 transient final 包装类型之间的区别

java - 加快 Netbeans 7.3 上的 Web 应用程序开发测试和调试速度

java - MPAndroidChart。如何播放scaleX动画来显示BarChart中实体的范围?

java - 如何防止使用@autowired

java - 轻量级 RESTful Java 框架

java - 使用流从 Json 创建嵌套映射

java - Spring 框架: Inserting another JSP file with a JSP file

java - 无法使用 StoredProcedureItemReader 读取 REF_CURSOR

c# - 如何强制单元测试的状态为 "Test wasn' t run”?(MS 测试)