我有一个matlab脚本,可以调用其他各种函数。我正在以下列方式处理可能的错误
try
matStart(MatObj);
catch err
msgbox('Error in Processing Figures!','Error!','error','modal');
fprintf(2,err.message);
sprintf('\n');
display(err.message);
end
正如您可能猜到的那样,这会打印导致异常的错误。但这只会打印导致错误的第一个函数。我希望将整个错误堆栈显示到导致错误发生的最后一个嵌套函数。可以吗?
答案 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'));
...