Например, я хочу поймать исключение cann't-read-a-file-at-this-path из imread(). Я могу это сделать.
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
Но единственные способы, с помощью которых я знаю, найти магическую строку для сравнения с ( "MATLAB: imread: fileOpen" в этом случае):
-
Выясните ошибку, поймайте исключение и посмотрите на идентификатор. Но это займет много времени. Например, использует ли Matlab другой идентификатор исключения, если файл существует, но на самом деле не является файлом изображения? Как насчет того, существует ли он, но у меня нет разрешения на чтение? Что, если это каталог?
-
Посмотрите на исходный код. imread() написано в Matlab, так что это возможно, но это не относится к другим функциям. И, конечно, imread() вызывает другие функции, которые не написаны в Matlab, и из них могут возникнуть исключения.
Есть ли какой-либо авторитетный способ узнать все исключения, которые imread() может выбросить? Я надеюсь, что это где-то в документации, но я не могу найти его.