En algunas de mis funciones quiero convertir algunas advertencias en errores. Por ejemplo, si quiero lanzar un error cuando str2func
produce una advertencia MATLAB:str2func:invalidFunctionName
, me gustaría hacer lo siguiente:conversión de advertencias a errores en MATLAB
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
Esto funciona bien si sé que un bloque de código puede dar un pequeño conjunto de advertencias. Sin embargo, es detallado y probablemente no se escale a bloques de código más grandes. ¿Hay una mejor manera de hacer esto? Idealmente, me gustaría una función que pueda convertir ciertas advertencias en errores en un bloque completo. Me permitiría modificar mi ejemplo a:
warnings2errors('MATLAB:str2func:invalidFunctionName');
predicate_func_try = str2func(predicate_func);
warnings2errors('off');
De acuerdo con este hilo - http://www.mathworks.com/matlabcentral/newsreader/view_thread/158768 - su camino es el único. –