WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Fehlerdefinition try catch möglich?

 

Thea
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 16.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2015, 18:47     Titel: Fehlerdefinition try catch möglich?
  Antworten mit Zitat      
Ich würde gern selber den Fehler definieren, bei dem matlab dann den catch code durchführen soll.
Ist das möglich? Welche möglichkeiten gibt es?

Danke euch!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.07.2015, 19:28     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe die Frage nicht ganz. MATLAB springt vom try- in den catch-Teil, sobald im try-Teil irgendein Fehler (error) passiert. Das kann ein in einer dort aufgerufenen MATLAB-Funktion aufgetretener Fehler sein, aber auch ein selbst per error-Befehl erzeugter Fehler.

Im try-Block kann darauf nach Belieben reagiert werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Thea
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 16.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.07.2015, 19:37     Titel:
  Antworten mit Zitat      
Hallo Harald!
Danke für deine Antwort!

Wenn ich das jetzt richtig verstanden habe, dann kann man selbst einen error definieren und wenn zB. "error_eigen" auftaucht kann, springt matlab automatisch zu catch?

Ich brauche einen error der praktisch aufzeigt wann ein physikalisch unmögliches Ereignis eintritt, zB Luftfeuchte >1.
error= phi>1

Ich habe schon so viel gesucht und nichts passendes gefunden.
Mir kommt die HErangehensweise, wenn man selber einen Error definiert, aber genauso for wie eine if Bedingung.. oder gibt es einen Unterschied zwischen try und catch mit eigener Fehlerdefinition und if else ?

Ich glaube ich verstehe hier shcon seit einiger Zeit etwas nicht.. ich komme aber leider nicht weiter. Ich hoffe das war aber ansonsten verständlich, was ich gerade geschrieben habe.
Danke und VG!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.07.2015, 19:50     Titel:
  Antworten mit Zitat      
Hallo,

bitte nicht mehrere Threads zum gleichen Thema.

Zitat:
Mir kommt die HErangehensweise, wenn man selber einen Error definiert, aber genauso for wie eine if Bedingung..

Üblicherweise wird der Fehler ja in einer if-Anweisung erzeugt.

Zitat:
oder gibt es einen Unterschied zwischen try und catch mit eigener Fehlerdefinition und if else ?

Ich sehe da kaum Gemeinsamkeiten.
try-catch: bei jeglichem Fehler wird in den catch-Teil gegangen.
if-else: unter einer bestimmten Bedingung wird der folgende Block ausgeführt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.07.2015, 12:07     Titel:
  Antworten mit Zitat      
Hallo Thea,

Man verwendet error , um eine Funktion hart abzubrechen, weil es keine Möglichkeit gibt weiter zu rechnen und die Probleme unerwartet sind.
Mit TRY-CATCH versucht man solche Fehler abzufangen und kann im CATCH-Block noch eine angemessene Fehlermeldung erzeugen, Files schließen oder irgendetwas anderes wichtiges ausführen.
Wenn man das Problem schon vorher erahnen kann, kann man es per IF-Bedingung abfangen und auch einen geeigneten error erzeugen, aber auch irgendwelche Abhilfen starten, falls das möglich ist.

Beispiele
Code:
fid = fopen(FileName, 'r');
if fid == -1
  error('Cannot open file: %s', FileName);  % Klarer Fehlermeldung! Sehr gut
end

Code:
fid = fopen(FileName, 'r');
% Schlechte Idee: Ergebnis von FOPEN nicht testen...

fscanf(fid, '%s');

Wenn jetzt FileName nicht existiert, wird Matlab einen Fehler erzeugen und anzeigen, dass "fid" kein gültiger File-Identifier ist. Das ist keine sinnvolle Fehlermeldung.
Code:
fid = fopen(FileName, 'r');
% Schlechte Idee: Ergebnis von FOPEN nicht testen...
try
  fscanf(fid, '%s');
catch
  error('There was a problem during reading the file: %s', FileName);
end

Das ist auch nicht so gut, denn diese Problem könnte auch alles mögliche andere sein. Besser per IF direkt das Ergebnis testen, wenn man schon ahnen kann, dass beim Öffnen ein Fehler auftreten kann.

Etwas klarer jetzt?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.07.2015, 12:12     Titel:
  Antworten mit Zitat      
Hallo Thea,

Man verwendet error , um eine Funktion hart abzubrechen, weil es keine Möglichkeit gibt weiter zu rechnen und die Probleme unerwartet sind.
Mit TRY-CATCH versucht man solche Fehler abzufangen und kann im CATCH-Block noch eine angemessene Fehlermeldung erzeugen, Files schließen oder irgendetwas anderes wichtiges ausführen.
Wenn man das Problem schon vorher erahnen kann, kann man es per IF-Bedingung abfangen und auch einen geeigneten error erzeugen, aber auch irgendwelche Abhilfen starten, falls das möglich ist.

Beispiele
Code:
fid = fopen(FileName, 'r');
if fid == -1
  error('Cannot open file: %s', FileName);  % Klarer Fehlermeldung! Sehr gut
end

Code:
fid = fopen(FileName, 'r');
% Schlechte Idee: Ergebnis von FOPEN nicht testen...

fscanf(fid, '%s');

Wenn jetzt FileName nicht existiert, wird Matlab einen Fehler erzeugen und anzeigen, dass "fid" kein gültiger File-Identifier ist. Das ist keine sinnvolle Fehlermeldung.
Code:
fid = fopen(FileName, 'r');
% Schlechte Idee: Ergebnis von FOPEN nicht testen...
try
  fscanf(fid, '%s');
catch
  error('There was a problem during reading the file: %s', FileName);
end

Das ist auch nicht so gut, denn diese Problem könnte auch alles mögliche andere sein. Besser per IF direkt das Ergebnis testen, wenn man schon ahnen kann, dass beim Öffnen ein Fehler auftreten kann.

Etwas klarer jetzt?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.