18

我有一个调用各种其他函数的 matlab 脚本。我正在通过以下方式处理可能的错误

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

正如您可能猜到的那样,这会打印导致异常的错误。但这只会打印导致错误的第一个函数。我希望将整个错误堆栈显示到导致错误发生的最后一个嵌套函数。可以做到吗?

4

2 回答 2

20

是的,您正在寻找的功能是“ getReport ”。您将需要“扩展”报告。

使用 getReport,您的代码将如下所示

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

这将显示与 matlab 中打印完整堆栈跟踪的未捕获异常相同的信息,当然文本不会是红色的。

于 2012-08-14T02:35:58.897 回答
9

继@thewopr 的回答之后,如果您愿意,可以通过将错误堆栈打印到“标准错误”输出流来将文本打印为红色,如下所示:

...
fprintf(2, '%s\n', getReport(err, 'extended'));
...
于 2012-08-14T06:47:32.570 回答