2012-08-14 17 views
14

Tengo un script de matlab que llama a varias otras funciones. Yo estoy manejando posible error de la siguiente maneraMuestra la pila de errores completa mientras se maneja el error

  try 
       matStart(MatObj); 
      catch err 
       msgbox('Error in Processing Figures!','Error!','error','modal'); 
       fprintf(2,err.message); 
       sprintf('\n'); 
       display(err.message); 
      end 

como que es fácil adivinar, esta opción se imprime el error que causó la exception.But esto sólo se imprime la primera función que causó el error. Quiero que toda la pila de errores se muestre hasta la última función anidada que causó el error. ¿Se puede hacer?

Respuesta

16

Sí, la función que está buscando es "getReport". Querrá el informe 'extendido'.

Usando getReport, su código se vería así

 try 
      matStart(MatObj); 
     catch err 
      msgbox('Error in Processing Figures!','Error!','error','modal'); 
      disp(getReport(err,'extended')); 
     end 

Esto mostrará la misma información que una excepción no capturada en Matlab que imprime la traza completa, aunque, por supuesto, el texto no será de color rojo.

9

A raíz de la respuesta de @ thewopr, puede hacer que el texto impreso en rojo si lo desea mediante la impresión de la pila de errores a la corriente de salida de 'error estándar', así:

... 
fprintf(2, '%s\n', getReport(err, 'extended')); 
... 
Cuestiones relacionadas