2012-08-14 68 views
14

我有一個調用各種其他功能的matlab腳本。我處理可能出現的錯誤以下列方式顯示完整的錯誤堆棧,而錯誤處理

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

,你可能已經猜到,這個打印導致該exception.But僅打印導致錯誤的第一個函數的錯誤。我希望將整個錯誤堆棧顯示到導致錯誤發生的最後一個嵌套函數。可以這樣做嗎?

回答

16

是的,您要查找的功能是「getReport」。您需要「擴展」報告。

使用getReport,你的代碼應該是這樣的

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

這將顯示同樣的信息在MATLAB未捕獲的異常,打印完整的堆棧跟蹤,但當然文本不會變成紅色。

9

從@ thewopr的回答繼,你可以有文字爲紅色印刷,如果你想通過打印錯誤堆棧到「標準錯誤」輸出流,就像這樣:

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