18

他のさまざまな関数を呼び出すmatlabスクリプトがあります。次のようにエラーの可能性を処理しています

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

ご想像のとおり、これは例外の原因となったエラーを出力しますが、これはエラーの原因となった最初の関数のみを出力します。エラーを発生させた最後のネストされた関数まで、エラースタック全体を表示したいと思います。できますか?

4

2 に答える 2

20

はい、探している関数は「getReport」です。'拡張'レポートが必要になります。

getReportを使用すると、コードは次のようになります。

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

これにより、完全なスタックトレースを出力するmatlabのキャッチされない例外と同じ情報が表示されますが、もちろんテキストは赤くなりません。

于 2012-08-14T02:35:58.897 に答える
9

@thewoprの回答に続いて、必要に応じて、次のようにエラースタックを「標準エラー」出力ストリームに出力することにより、テキストを赤で印刷することができます。

...
fprintf(2, '%s\n', getReport(err, 'extended'));
...
于 2012-08-14T06:47:32.570 に答える