Par exemple, je veux capturer une exception couldn't-read-a-file-at-that-path de imread(). Je peux le faire.Existe-t-il des références faisant autorité sur les exceptions pouvant être générées par les fonctions intégrées de Matlab?
imagePath = 'a_picture.jpg';
try
im = imread(imagePath);
catch exception
if strcmp(exception.identifier, 'MATLAB:imread:fileOpen')
fprintf('Couldn''t open %s.\n', imagePath);
im = [];
else
fprintf('Unexpected error (%s): %s\n', ...
exception.identifier, exception.message);
throw(exception);
end
end
Mais les seuls moyens que je connais de découvrir la chaîne magique pour comparer avec ('Matlab: imread: fileOpen' dans ce cas), sont les suivants:
cause l'erreur, attraper l'exception et regardez l'identifiant. Mais il faudrait beaucoup de temps pour le faire correctement. Par exemple, Matlab utilise-t-il un identificateur d'exception différent si le fichier existe mais n'est pas réellement un fichier image? Que diriez-vous si cela existe mais je n'ai pas la permission de lire? Et si c'est un répertoire?
Regardez le code source. imread() est écrit en Matlab, donc c'est possible, mais ce ne serait pas pour d'autres fonctions. Et bien sûr, imread() appelle autres fonctions qui ne sont pas écrites dans Matlab, et des exceptions peuvent surgir d'elles.
Y a-t-il un moyen autoritaire pour moi de connaître toutes les exceptions que imread() peut lancer? J'espère que c'est dans la documentation quelque part, mais je ne peux pas le trouver.
Copie possible: [MATLAB: référence sur les messages d'erreur] (http://stackoverflow.com/questions/4562698/matlab-a-reference-about-error-messages) – gnovice
Pourquoi l'exception est-elle générée? Cela a fonctionné ou non, n'est-ce pas? – MatlabDoug
Une meilleure question: pourquoi avez-vous besoin d'identifier l'erreur avec une telle spécificité, alors que tout ce que vous faites vraiment avec elle est effectivement de le repenser? – gnovice