Ad esempio, voglio catturare un'eccezione couldn't-read-a-file-at-that-path da imread(). Posso farlo.C'è qualche riferimento autorevole su quali eccezioni possono essere lanciate dalle funzioni built-in di 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
Ma gli unici modi che conosco per scoprire la stringa magica da confrontare con ('MATLAB: imread: FileOpen' in questo caso), sono:
Causa l'errore, intercettare l'eccezione e guarda l'identificatore. Ma ci vorrebbe molto tempo per farlo correttamente. Ad esempio, Matlab usa un identificatore di eccezione diverso se il file esiste ma non è effettivamente un file immagine? Che ne dici se esiste ma non ho il permesso di lettura? Cosa succede se si tratta di una directory?
Controllare il codice sorgente. imread() è scritto in Matlab, quindi questo è possibile, ma non lo sarebbe per altre funzioni. E naturalmente imread() chiama le altre altre funzioni che non sono scritte in Matlab, e potrebbero nascere eccezioni da esse.
Esiste un modo autorevole per farmi conoscere tutte le eccezioni che imread() può lanciare? Spero che questo sia nella documentazione da qualche parte, ma non riesco a trovarlo.
Possibile duplicato: [MATLAB: un riferimento ai messaggi di errore] (http://stackoverflow.com/questions/4562698/matlab-a-reference-about-error-messages) – gnovice
Perché è importante che venga emessa un'eccezione? Ha funzionato o no, giusto? – MatlabDoug
Una domanda migliore: perché è necessario identificare l'errore con una tale specificità, quando tutto ciò che si sta facendo realmente lo sta ripensando? – gnovice