pour ça ta fonction perso "takepicture" doit retourner une variable, en général "0/1" 0 si pas d'erreur, 1 si erreur d'exécution, et en fonction de ce retour tu pourras faire ce que tu veux : recommencer la photo, tourner la tete etc ...

La question à se poser c'est comment estimer ton retour sans erreur (tu peux utiliser d'autres codes pour les différentes erreur"
0: pas de pb
1: pb de mise au point
2: pb de surexposition
...
ton pb sera de savoir quand une photo est "nette"/"bonne". A savoir, connecter ton boitier à ton soft pour lui remonter ces données or le boitier ne pourra que transmettre ce qu'il sait comme l'exposition, si AF effectué ou non, mais si la netteté est réussie (flou de bougé, mise au point sur le mauvais élément) ça reste difficile, à moins de passer en liveview et là tu passes en mode "traitement d'image"