Отображение полного стека ошибок при обработке ошибок
У меня есть matlab script, который вызывает другую функцию. Я обрабатываю возможную ошибку следующим образом.
try
matStart(MatObj);
catch err
msgbox('Error in Processing Figures!','Error!','error','modal');
fprintf(2,err.message);
sprintf('\n');
display(err.message);
end
как вы, вероятно, можете догадаться, это печатает ошибку, вызвавшую исключение. Но это только печатает самую первую функцию, вызвавшую ошибку. Я хочу, чтобы весь стек ошибок отображался до последней вложенной функции, которая вызвала ошибку. Может ли быть сделано?
Ответы
Ответ 1
Да, функция, которую вы ищете, " getReport". Вам понадобится "расширенный" отчет.
Используя getReport, ваш код будет выглядеть следующим образом:
try
matStart(MatObj);
catch err
msgbox('Error in Processing Figures!','Error!','error','modal');
disp(getReport(err,'extended'));
end
Это отобразит ту же информацию, что и неперехваченное исключение в matlab, которое печатает полную трассировку стека, хотя, конечно, текст не будет красным.
Ответ 2
Следуя ответу @thewopr, вы можете напечатать красный текст, если хотите, распечатав стопку ошибок в выходной поток "стандартной ошибки", например:
...
fprintf(2, '%s\n', getReport(err, 'extended'));
...