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

Adn*_*nan 18 error-handling matlab

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

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

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

law*_*low 20

是的,您正在寻找的功能是" getReport ".你会想要'扩展'报告.

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

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

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


Edr*_*ric 9

继@thewopr的回答之后,如果您希望将错误堆栈打印到"标准错误"输出流,可以将文本打印为红色,如下所示:

...
fprintf(2, '%s\n', getReport(err, 'extended'));
...
Run Code Online (Sandbox Code Playgroud)