我使用此功能检查是否存在网址图片:
public Boolean testImage(String url) {
try {
BufferedImage image = ImageIO.read(new URL(url));
//BufferedImage image = ImageIO.read(new URL("http://someimage.jpg"));
if (image != null) {
return true;
} else {
return false;
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
System.err.println("URL error with image");
e.printStackTrace();
} catch (IOException e) {
System.err.println("IO error with image");
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
然后我称这种方法:
if (testImage("URLHERE")) {
System.out.println("Yes");
} else {
System.out.println("No");
}
问题是当我执行此代码时,我得到了这个结果:
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
IO error with image
javax.imageio.IIOException: Can't get input stream from URL!
at javax.imageio.ImageIO.read(ImageIO.java:1369)
我只想得到是或否,不是错误,我知道在某些情况下,网址不是有效的,而是我要确定的内容。有可能吗?
由于
答案 0 :(得分:2)
这是可能的。从两个异常块返回false
。
答案 1 :(得分:1)
问题是当你发现任何异常时,你没有返回一个布尔值。
试试这个:
public Boolean testImage(String url){
try {
BufferedImage image = ImageIO.read(new URL(url));
//BufferedImage image = ImageIO.read(new URL("http://someimage.jpg"));
if(image != null){
return true;
} else{
return false;
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
System.err.println("URL error with image");
e.printStackTrace();
return false;
} catch (IOException e) {
System.err.println("IO error with image");
// TODO Auto-generated catch block
e.printStackTrace();
return false;
}
return false;
}