例如,我想从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
Run Code Online (Sandbox Code Playgroud)
但我知道发现与之比较的神奇字符串(在本例中为'MATLAB:imread:fileOpen')的唯一方法是:
导致错误,捕获异常,并查看标识符.但要做到这一点需要很长时间.例如,如果文件存在但实际上不是图像文件,Matlab是否使用不同的异常标识符?如果它存在但我没有读取权限怎么样?如果它是一个目录怎么办?
看一下源代码.imread()是用Matlab编写的,所以这是可能的,但它不适用于其他函数.当然,imread()调用其他不是用Matlab编写的函数,异常可能会从它们中冒出来.
有没有权威的方法让我知道imread()可以抛出的所有异常?我希望这是在文档的某个地方,但我找不到它.