Отображение полного стека ошибок при обработке ошибок

У меня есть 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'));
...