Umwandlung von Warnungen in Fehler in MATLAB

8

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:

%Vor%

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%     
AE426082 24.02.2012, 13:44
quelle

3 Antworten

5

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%     
jHops 02.10.2012 20:54
quelle
1

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.

    
Pursuit 24.02.2012 17:16
quelle
0

Ich habe einen Weg gefunden, das etwas zu verallgemeinern. Es funktioniert folgendermaßen (ähnlich wie tic und toc ):

%Vor%

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%     
AE426082 24.02.2012 21:53
quelle

Tags und Links