преобразование предупреждений в ошибки в MATLAB

В некоторых моих функциях я хочу преобразовать некоторые предупреждения в ошибки. Например, если я хочу выдать ошибку, когда 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');
8
задан AE426082 24 February 2012 в 13:44
поделиться