Na przykład chcę złapać wyjątek cann't-read-a-file-at-that-path z imread(). Mogę to zrobić.Czy istnieje autorytatywne odniesienie do wyjątków, które mogą być wrzucane przez wbudowane funkcje 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
ale jedyne sposoby wiem odkryć magiczne ciąg porównać z ('MATLAB: imread: FileOpen' w tym przypadku), to:
Przyczyna błędu, złapać wyjątek i spójrz na identyfikator. Ale zajmie to dużo czasu, aby to zrobić dobrze. Na przykład, czy Matlab używa innego identyfikatora wyjątku, jeśli plik istnieje, ale tak naprawdę nie jest plikiem graficznym? A jeśli tak, ale nie mam uprawnień do odczytu? Co jeśli jest to katalog?
Sprawdź kod źródłowy. Imread() jest napisany w Matlab, więc jest to możliwe, ale nie byłoby to dla innych funkcji. I oczywiście imread() wywołuje funkcje inne,, które nie są napisane w Matlabie, a wyjątki mogą się od nich wywrócić.
Czy istnieje jakiś autorytatywny sposób dla mnie znać wszystkie wyjątki imread() można rzucić? Mam nadzieję, że jest to gdzieś w dokumentacji, ale nie mogę go znaleźć.
Prawdopodobny duplikat: [MATLAB: odniesienie do komunikatów o błędach] (http://stackoverflow.com/questions/4562698/matlab-a-reference-about-error-messages) – gnovice
Dlaczego ma znaczenie, który wyjątek został zgłoszony? Albo działało, albo nie, prawda? – MatlabDoug
Lepsze pytanie: dlaczego musisz zidentyfikować błąd z taką specyficznością, kiedy wszystko, co naprawdę robisz z nim, skutecznie go podrzuca? – gnovice