即使内置函数(例如dlmread())失败,如何使脚本继续?

时间:2016-02-05 08:36:24

标签: database matlab import

我需要使用var functions = [f1, f2, f3]; var arg = "foo"; var result = functions.every(function(func){ return func(arg); }); 从.txt文件中读取大量数据,这在80%的情况下工作正常,20%的问题不在一般规则中,并且dlm读取因随机发生而失败意外数据(主要是行中存在多个标题行(字符串))。

我需要的是一种方法,如果dlmread失败,仍然可以通过跳过文件来运行我的脚本(比如存储一些让我知道它失败的布尔变量) 要么 在MATLAB中另一个更通用的函数,我可以运行它来读取数据并自动化它。

如果你甚至可以部分解决我的问题,那将会有很大的帮助。

PS:在某些情况下,行号可以在标题行存在的位置预测。 我也尝试过importdata,但这需要很长时间。

1 个答案:

答案 0 :(得分:2)

如果您的某个功能存在潜在错误,并且您希望只是跳过它,则应使用关键字try(可能还有catch)。它有点像if / else,除非它在功能错误时不会崩溃。

try
dlmdata = dlmread('Invalid call')  % Will crash
catch
dlmdata = 0; 
warning('Call to dlmread failed')
end

Warning: Call to dlmread failed 

请注意,您不需要catch部分,但这是一个很好的做法。通常需要为变量赋值,以避免"Undefined function or variable 'dlmdata'"