2010-09-13 4 views
13

Ich konvertiere einige .dat-Dateien in .mat-Dateien mit einer Funktion. Ich rufe diese Funktion innerhalb einer Schleife auf, um eine Anzahl von Dateien zu konvertieren. Es gibt Fälle, in denen meine .dat-Datei beschädigt ist und die Funktion nicht konvertieren kann und ein Fehler auftritt, der die Schleife stoppt.Wie kann ich mit einer Schleife fortfahren, wenn ein Fehler in MATLAB auftritt?

Jetzt ist meine Frage: Gibt es einen Befehl, in dem, wenn der Fehler auftritt, sollte der aktuelle (i) Wert in der Schleife und gehen Sie für den nächsten Inkrementwert (in meinem Fall die nächste Datei)?

Antwort

20

Sie können dies mit einer TRY/CATCH Anweisung zusammen mit CONTINUE. Legen Sie die folgenden in Ihrer Schleife:

try    %# Attempt to perform some computation 
    %# The operation you are trying to perform goes here 
catch exception %# Catch the exception 
    continue  %# Pass control to the next loop iteration 
end 

EDIT:

Amro schlägt vor, eine gute Idee, in seinem Kommentar unten. Möglicherweise möchten Sie eine Warnung ausgeben, die anzeigt, dass der Fehler aufgetreten ist und für welche Datei, oder vielleicht möchten Sie sogar eine Liste der Dateien speichern, die nicht ordnungsgemäß konvertiert wurden. Um letzteres zu tun, können Sie zunächst eine leere Zelle Array initialisieren, bevor Sie Ihre Schleife starten:

failedFiles = {}; %# To store a list of the files that failed to convert 

Dann, nachdem Sie die Ausnahme abfangen, aber bevor Sie den continue Befehl, fügen Sie den Namen/Pfad der aktuellen Datei wird in die Liste umgewandelt:

... 
catch exception 
    failedFiles = [failedFiles; {'currentFile.dat'}]; 
    continue 
end 

Wenn Ihre Schleife fertig ist, können Sie dann auf failedFiles schauen leicht zu sehen, was nicht richtig konvertiert hat.

+6

sollten Sie vielleicht den Benutzer des Fehlers benachrichtigen: 'versuchen Sie, ..., fang ME, Warnung (ME.identifier, ME.message), weiter, Ende' – Amro

Verwandte Themen