2012-08-14 17 views
14

Tôi có một tập lệnh matlab gọi nhiều chức năng khác. Tôi đang xử lý lỗi có thể theo cách sau đâyHiển thị ngăn lỗi đầy đủ trong khi xử lý lỗi

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

như bạn có thể đoán, điều này in lỗi gây ra ngoại lệ. Nhưng điều này chỉ in chức năng đầu tiên gây ra lỗi. Tôi muốn toàn bộ ngăn xếp lỗi được hiển thị xuống hàm lồng nhau cuối cùng đã gây ra lỗi xảy ra. Có thể tis được thực hiện?

Trả lời

16

Có, chức năng bạn đang tìm kiếm là "getReport". Bạn sẽ muốn báo cáo 'mở rộng'.

Sử dụng getReport, mã của bạn sẽ trông như thế này

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

này sẽ hiển thị các thông tin tương tự như một ngoại lệ còn tự do trong matlab mà in stack trace đầy đủ, mặc dù tất nhiên các văn bản sẽ không có màu đỏ.

9

Tiếp theo từ câu trả lời @ thewopr, bạn có thể có các văn bản in trong màu đỏ nếu bạn muốn bằng cách in chồng lỗi cho luồng dữ liệu đầu ra 'sai số chuẩn', như vậy:

... 
fprintf(2, '%s\n', getReport(err, 'extended')); 
... 
Các vấn đề liên quan