В некоторых моих функциях я хочу преобразовать некоторые предупреждения в ошибки. Например, если я хочу выдать ошибку, когда str2func
выдает предупреждение MATLAB: str2func: invalidFunctionName
, я бы сделал следующее:
invalid_func_id = 'MATLAB:str2func:invalidFunctionName';
%hide warning of interest
warning('off', invalid_func_id);
%this might yield the warning of interest
predicate_func_try = str2func(predicate_func);
[~, warn_id] = lastwarn;
assert(~strcmp(warn_id, invalid_func_id)...
, 'MyFunc:InvalidFunctionName'...
, 'The predicate function %s does not have a valid name'...
, predicate_func...
);
warning on all
Это отлично работает, если я знаю, что конкретный блок кода может выдавать небольшой набор предупреждений. Однако он подробный и, вероятно, не масштабируется для больших блоков кода. Есть ли лучший способ сделать это? В идеале мне нужна функция, которая может превращать определенные предупреждения в ошибки во всем блоке. Это позволило бы мне изменить мой пример на:
warnings2errors('MATLAB:str2func:invalidFunctionName');
predicate_func_try = str2func(predicate_func);
warnings2errors('off');