2010-04-24 6 views
1

Lorsque vous utilisez imageio.imageio.read, vous ne pouvez pas créer ImageInputStream. J'ai une exception de catch autour de lui donc le programme survit mais je me demandais s'il y avait un moyen de mettre une déclaration if autour de lui qui vérifie pour voir si elle est fausse et ensuite essayer de le relire si c'était le cas. demandant essentiellement s'il y a un test pour les exceptions?Imageiio ne peut pas créer de flux d'entrée d'image

+0

Quel est le problème avec 'try..catch'? – doublep

+0

Comment puis-je tester avec elle si elle a attrapé une exception? et si il a de nouveau dos à essayer de relire le fichier avec catch? – pie154

+1

Réglez juste une variable 'boolean' (' failed', par exemple) à 'true' dans votre bloc' catch'. Et plus tard, réessayez si cette variable est 'true'. Cependant, à moins qu'il y ait quelques changements (dans le fichier image, probablement) d'ici là, réessayer donnera la même erreur. – doublep

Répondre

1

try ... catchest le test pour les exceptions. Si vous voulez vraiment traiter votre exception en tant que mécanisme de contrôle de la boucle, vous pouvez envelopper quelque chose comme ceci:

boolean success = false; 
do { 
    try { 
     // do imageIO stuff 
     success = true;  // this statement only reached if no exception 
    } catch (Exception e) { 
     System.err.println(e); 
    } 
} while (!success); 

Comme conseils de doublep, c'est une implémentation assez insensée, car il est peu probable que le problème éloignez-vous d'une itération de la boucle à la suivante, de sorte que votre programme ne fera que boucler sans cesse des messages d'erreur d'impression.

+0

C'est exactement ce que j'étais après merci. Ceci est la lecture d'une image de caméra qui est enregistrée à partir d'une caméra dslr connectée et le problème est que je tente de le lire avant que toute l'image a été écrite afin que le délai entre les lectures permette d'écrire toute l'image avant tenté d'être relu. – pie154

+0

Ah OK. J'avais peur que vous fassiez quelque chose comme ça :) Une implémentation plus soigneuse pourrait vérifier périodiquement la taille du fichier et différer le chargement de l'image jusqu'à ce que la taille se stabilise. L'approche de l'écrasement de vos erreurs est un peu brutale, mais si cela fonctionne pour vous, il n'y a pas besoin de le rendre plus compliqué :) –

Questions connexes