Main Content

try, catch

Ausführen von Anweisungen und Erfassen der resultierenden Fehler

Syntax

try
   statements
catch exception
   statements
end

Beschreibung

Beispiel

try statements, catch statements end führt die Anweisungen im Block try aus und erfasst die resultierenden Fehler im Block catch. Bei diesem Ansatz können Sie das Standard-Fehlerverhalten für eine Reihe von Programmanweisungen übersteuern. Wenn eine beliebige Anweisung in einem try-Block zu einem Fehler führt, wechselt die Programmsteuerung sofort zum catch-Block, der Ihre Fehlerbehandlungs-Anweisungen enthält.

exception ist ein MException-Objekt, mit dem Sie den Fehler bestimmen können. Der catch-Block weist das aktuelle Ausnahmeobjekt („exception“) der Variablen exception zu.

Die Blöcke try und catch können verschachtelte try/catch-Anweisungen enthalten.

Beispiele

alle reduzieren

Erstellen Sie zwei Matrizen, die Sie nicht vertikal verknüpfen können.

A = rand(3);
B = ones(5);

C = [A; B];
Error using vertcat
Dimensions of matrices being concatenated are not consistent.

Verwenden Sie try/catch, um weitere Informationen zu den Dimensionen anzuzeigen.

try
   C = [A; B];
catch ME
   if (strcmp(ME.identifier,'MATLAB:catenate:dimensionMismatch'))
      msg = ['Dimension mismatch occurred: First argument has ', ...
            num2str(size(A,2)),' columns while second has ', ...
            num2str(size(B,2)),' columns.'];
        causeException = MException('MATLAB:myCode:dimensions',msg);
        ME = addCause(ME,causeException);
   end
   rethrow(ME)
end 
Error using vertcat
Dimensions of matrices being concatenated are not consistent.

Caused by:
    Dimension mismatch occurred: First argument has 3 columns while second has 5 columns.

Wenn die Matrix-Dimensionen nicht übereinstimmen, zeigt MATLAB® weitere Informationen zur Ungleichheit an. Alle anderen Fehler werden wie üblich angezeigt.

Es werden Ausnahmen erfasst, die durch Aufrufen der nicht vorhandenen Funktion, notaFunction, generiert werden. Falls eine Ausnahme vorliegt, wird eine Warnung ausgegeben und der Ausgabe wird der Wert 0 zugewiesen.

try
    a = notaFunction(5,6);
catch
    warning('Problem using function.  Assigning a value of 0.');
    a = 0;
end
Warning: Problem using function.  Assigning a value of 0.

Der Aufruf von notaFunction selbst führt zu einem Fehler. Wenn Sie try und catch verwenden, erfasst dieser Code jede Ausnahme und paketiert sie neu als Warnung, sodass MATLAB mit der Ausführung der nachfolgenden Befehle fortfahren kann.

Verwenden Sie try/catch, um verschiedene Fehlertypen unterschiedlich zu behandeln.

  • Wenn die Funktion notaFunction undefiniert ist, wird anstelle eines Fehlers eine Warnung ausgegeben und der Ausgabe wird der Wert NaN zugewiesen.

  • Wenn notaFunction.m vorhanden ist, es sich jedoch um ein Skript anstatt um eine Funktion handelt, wird anstelle eines Fehlers eine Warnung ausgegeben, das Skript wird ausgeführt und der Ausgabe wird der Wert 0 zugewiesen.

  • Wenn MATLAB einen Fehler aus einem anderen Grund ausgibt, wird die Ausnahme erneut ausgegeben.

try
    a = notaFunction(5,6);
catch ME
    switch ME.identifier
        case 'MATLAB:UndefinedFunction'
            warning('Function is undefined.  Assigning a value of NaN.');
            a = NaN;
        case 'MATLAB:scriptNotAFunction'
            warning(['Attempting to execute script as function. '...
                'Running script and assigning output a value of 0.']);
            notaFunction;
            a = 0;
        otherwise
            rethrow(ME)
    end
end
Warning: Function is undefined.  Assigning a value of NaN. 

Tipps

  • Sie können nicht mehrere catch-Blöcke innerhalb eines try-Blocks verwenden, doch Sie können ganze try/catch-Blöcke verschachteln.

  • Im Gegensatz zu einigen anderen Sprachen lässt MATLAB die Verwendung eines finally-Blocks innerhalb von try/catch-Anweisungen nicht zu.

Erweiterte Fähigkeiten

Versionsverlauf

Eingeführt vor R2006a

alle erweitern