In einigen meiner Funktionen möchte ich einige Warnungen in Fehler umwandeln. Wenn ich zum Beispiel einen Fehler ausgeben möchte, wenn str2func
eine MATLAB:str2func:invalidFunctionName
Warnung liefert, würde ich Folgendes tun:
Das funktioniert gut, wenn ich weiß, dass ein bestimmter Codeblock eine kleine Anzahl von Warnungen ausgeben kann. Es ist jedoch sehr ausführlich und skaliert wahrscheinlich nicht zu größeren Code-Blöcken. Gibt es einen besseren Weg, dies zu tun? Im Idealfall möchte ich eine Funktion, die bestimmte Warnungen in einem ganzen Block zu Fehlern machen kann. Es würde mir erlauben, mein Beispiel zu ändern:
%Vor%Eine andere Methode wäre, die Warnung selbst zu überlasten. Siehe Implementierung von warning.m und warning2error.m unten. Der größte Nebeneffekt, den ich daraus ersehen kann, ist, dass Sie auf dem Stack einen zusätzlichen "warning.m" für alle Warnmeldungen sehen werden. Nicht sicher, ob es einen Weg gibt. Außerdem müssten Sie die Warnung MATLAB: dispatcher: nameConflict deaktivieren, da wir einen Built-in überlasten.
EDIT: Gerade bemerkt auf Matlabcentral.com eine undokumentierte Verwendung der eingebauten Warnung, die dies bewirkt: Ссылка Ссылка
%Vor%VERWENDUNG VON BEFEHLSZEILEN
warning2error ('hinzufügen', 'MATLAB: str2func: invalidFunctionName')
Warnung.m:
%Vor%Warning2Error.m:
%Vor%Ich bin mir nicht bewusst, dass Sie genau das tun können, was Sie wollen. Je nachdem, aus welchem Grund Sie Fehler in Warnungen umwandeln möchten, können Sie möglicherweise mit:
auskommen %Vor%oder
%Vor% Sie können auch auf warning on stacktrace
schauen, um mehr Informationen über Warnungen zu erhalten, wenn sie angezeigt werden.
Wenn Sie eine tatsächliche Fehlermeldung benötigen (nicht nur eine Möglichkeit, den Debugger zu öffnen), dann bin ich ziemlich beeindruckt von der Methode, die Sie in die Frage eingefügt haben.
Ich habe einen Weg gefunden, das etwas zu verallgemeinern. Es funktioniert folgendermaßen (ähnlich wie tic
und toc
):
Zwischen setwarnings2errors
und getwarnings2errors
wird bei allen Warnungen ein Fehler ausgegeben, wenn sie die letzte Warnung sind. Daher sollte es nicht in großen Blöcken verwendet werden, wo viele verschiedene Warnungen auftreten können. Ich habe die Funktionen folgendermaßen implementiert:
setwarnings2errors:
%Vor%getwarnings2errors:
%Vor%Tags und Links matlab error-handling warnings