Ich möchte mehrere Zeilen Code ausführen, aber ich bin mir nicht sicher, ob eine Zeile einen Fehler verursacht. Wenn jedoch ein Fehler auftritt, möchte ich, dass das Skript diese Zeile ignoriert und fortfährt.sequenzieller Versuch Fang Endblock für Matlab
Eine Möglichkeit wäre, einen try-catch-end
Block zu haben, der einen Block Code überspringt, der Fehler verursachen könnte. Sobald jedoch ein Fehler auftritt, wird der Rest des Codes nach dem Fehler in der try-Anweisung nicht ausgeführt.
TL; TR: Habe ich eine andere Wahl als einen try-catch-end
Block für jede einzelne Zeile im folgenden Beispielcode zu schreiben?
Beispielcode:
try
disp('1st line');
disp('2nd line');
PRODUCE_ERROR; %throws an error, variable/function does not exist
disp('3rd line'); %%%%%
disp('4th line'); % these lines I would like to keep executing
disp('5th line'); %%%%%
catch
disp('something unexpected happened');
end
Ausgang:
1st line
2nd line
something unexpected happened
Ausgabe, die bevorzugt werden würde:
1st line
2nd line
something unexpected happened
3rd line
4th line
5th line
bezogen werden: Why should I not wrap every block in "try"-"catch"?
ich rekursiver Weise denken kann, dieses Problem zu lösen, ist jedoch, dass wahrscheinlich nicht die eleganteste Art und Weise ... – user2305193
Sie mit dem Rest des Codes weiter durch den Fehler nicht Erneutes Auslösen. Kannst du ein [mcve] posten? – beaker
Auch wenn Sie den Fehler nicht erneut auslösen, wird der Rest des 'catch'-Zweiges übersprungen. Siehe zum Beispiel 'klar, a = 1; c = 3; versuchen, disp (a), disp (b), disp (c), end' –