gpt4 book ai didi

exception - Matlab的内置函数可以抛出哪些异常,有没有权威的引用资料?

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:16 25 4
gpt4 key购买 nike

例如,我想从 imread() 捕获一个 couldn't-read-a-file-at-that-path 异常。我可以做到这一点。

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”)是:

  1. 引起错误,捕获异常,并查看标识符。但要做到这一点需要很长时间。例如,如果文件存在但实际上不是图像文件,Matlab 是否会使用不同的异常标识符?如果它存在但我没有读取权限怎么办?如果是目录呢?

  2. 查看源代码。 imread() 是用 Matlab 编写的,所以这是可能的,但它不会用于其他功能。当然,imread() 调用不是用 Matlab 编写的其他函数,异常可能会从中冒出来。

有没有权威的方法让我知道 imread() 可以抛出的所有异常?我希望这在某处的文档中,但我找不到。

最佳答案

没有,没有。

问题是,即使有关于 MatLab 中给定函数抛出的内容的权威引用,它也可能因版本而异。因此,即使您可以做到,您也可能不应该这样做。

我建议只检查您知道可以处理的错误,并为其他错误生成一些一般性错误(或重用 MatLab 给您的错误)。


一些基于其他语言/框架的评论:

在 .NET 中,唯一可以从方法中抛出的异常列表在文档中,并且不喜欢源代码。这些通常已过时、无效且不完整。

在 Java 中,您可以指定从什么方法中抛出什么异常。然后由编译器验证,因此编译器可以构建权威引用。 MatLab 缺少这样的功能,因此您能做的最好的事情就是按照其他答案中的概述进行搜索。

关于exception - Matlab的内置函数可以抛出哪些异常,有没有权威的引用资料?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com