J'ai la classe java avec une méthode qui obtient une image à partir d'un site Web:Comment attraper un java sans contrôle/exception d'exécution (en particulier SecurityException)
private Image image;
private int height;
private int width;
private String imageUri;
public Image getImage() {
if (image == null) {
log.info("Fetching image: " + imageUri);
try {
URL iURL = new URL(imageUri);
ImageIcon ii = new ImageIcon(iURL);
image = ii.getImage();
height = image.getHeight(null);
width = image.getWidth(null);
} catch (SecurityException e) {
log.error("Unable to fetch image: " + imageUri,e);
} catch (MalformedURLException e) {
log.error("Unable to fetch image: " + imageUri,e);
}
}
return image;
}
Le problème est que parfois le imageUri j'essaie de chercher obtient redirigé, provoquant le constructeur ImageIcon pour lancer une exception java.lang.SecurityException - qui n'est pas interceptée par la clause catch, provoquant l'arrêt de mon programme. Est-ce que quelqu'un peut suggérer comment je pourrais attraper cette exception?
Merci
I voir aucun problème avec votre code édité. Essayez de déboguer à travers. – Kolibri
Salut Kolibri - J'ai découvert le problème: l'exception est lancée par un thread séparé que le constructeur ImageIcon engendre - donc je ne peux pas l'attraper. –
Hah, quelle erreur intéressante. Je n'aurais jamais deviné que le constructeur ImageIcon engendrerait un nouveau thread. Vous devrez créer Thread.UncaughtExceptionHandler pour gérer cette exception non contrôlée. – Kolibri