我正在访问外部 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;
}
事实证明,如果我将错误的参数传递给目标端点,我会收到以下错误消息:
所以基本上我想抛出
上面相同的错误,但我也想抛出
一个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/