Exception 关于Matlab'可以引发哪些异常,是否有权威参考;s的内置功能?
例如,我想从imread()捕获无法读取该路径的文件异常。我能做到Exception 关于Matlab'可以引发哪些异常,是否有权威参考;s的内置功能?,exception,matlab,Exception,Matlab,例如,我想从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
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”)是:
有没有权威的方法让我知道imread()可以抛出的所有异常?我希望这是在某个地方的文档中,但我找不到它。我搜索了它,但没有找到任何东西。。。我看到的唯一能帮助你的是分析
imread
的源代码,我认为这是不可能的。但是,您始终可以尝试在中查看相同函数的源代码,因为它几乎相同(我认为)。如果您愿意枚举文件以生成自己的引用,请尝试
grep -r "MATLAB:" <matlab root>
grep-r“MATLAB:
您将得到一个很长的列表…但似乎错误是由error()
或mexErrMsgIdAndTxt
引发的。这些加上函数名可以让您更加具体。不过速度很慢
grep
还将注意到一些二进制文件匹配。向它馈送-a
,它将能够从许多错误消息中提取错误消息。不,没有
问题是,即使在MatLab中有一个关于给定函数抛出内容的权威参考,它也可能会随着版本的变化而变化。所以即使你能做到,你也不应该
我建议只检查那些您知道可以处理的错误,并为其他错误生成一些通用错误(或者重用MatLab提供的错误)
基于其他语言/框架的一些评论: 在.NET中,唯一可以从方法抛出的异常列表在文档中,源代码不喜欢。这些文件通常过时、无效且不完整
在Java中,您可以指定从什么方法引发什么异常。这将由编译器验证,因此编译器可以构建权威引用。MatLab缺少这一功能,因此您最好按照其他答案中所述进行搜索。可能重复:@gnovice&MatlabDoug-在这种情况下,这可能无关紧要,但您可能需要根据错误类型进行变量处理。如果这不重要,为什么Matlab推荐并使用错误ID?顺便说一句,我不认为这是重复的。他想要一份什么扔什么的参考资料。另一个问题问他们是什么意思。要获得一个全面的错误列表,请注意,每个matlab错误消息都以matlab开头:--您应该能够在读取x时执行类似于find/Applications/matlab_R2010b.app/|的操作;做echo$x;字符串$x | grep“MATLAB:”;done@gnovice,我不是MATLAB专家,但在我看来,他挑出了一个特殊的例外,不重新抛出它。