错误处理时显示完整的错误堆栈

时间:2012-08-14 00:30:53

标签: matlab error-handling

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

            try
                 matStart(MatObj);
             catch err
                 msgbox('Error in Processing Figures!','Error!','error','modal');
                 fprintf(2,err.message);
                 sprintf('\n');
                 display(err.message);
            end
正如您可能猜到的那样,这会打印导致异常的错误。但这只会打印导致错误的第一个函数。我希望将整个错误堆栈显示到导致错误发生的最后一个嵌套函数。可以吗?

2 个答案:

答案 0 :(得分:20)

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

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

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

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

答案 1 :(得分:9)

根据@ thewopr的回答,如果您愿意,可以将错误堆栈打印到“标准错误”输出流,如下所示:

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