www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Forenbaum
^ Forenbaum
Status Vorhilfe
  Status Geisteswiss.
    Status Erdkunde
    Status Geschichte
    Status Jura
    Status Musik/Kunst
    Status Pädagogik
    Status Philosophie
    Status Politik/Wirtschaft
    Status Psychologie
    Status Religion
    Status Sozialwissenschaften
  Status Informatik
    Status Schule
    Status Hochschule
    Status Info-Training
    Status Wettbewerbe
    Status Praxis
    Status Internes IR
  Status Ingenieurwiss.
    Status Bauingenieurwesen
    Status Elektrotechnik
    Status Maschinenbau
    Status Materialwissenschaft
    Status Regelungstechnik
    Status Signaltheorie
    Status Sonstiges
    Status Technik
  Status Mathe
    Status Schulmathe
    Status Hochschulmathe
    Status Mathe-Vorkurse
    Status Mathe-Software
  Status Naturwiss.
    Status Astronomie
    Status Biologie
    Status Chemie
    Status Geowissenschaften
    Status Medizin
    Status Physik
    Status Sport
  Status Sonstiges / Diverses
  Status Sprachen
    Status Deutsch
    Status Englisch
    Status Französisch
    Status Griechisch
    Status Latein
    Status Russisch
    Status Spanisch
    Status Vorkurse
    Status Sonstiges (Sprachen)
  Status Neuerdings
  Status Internes VH
    Status Café VH
    Status Verbesserungen
    Status Benutzerbetreuung
    Status Plenum
    Status Datenbank-Forum
    Status Test-Forum
    Status Fragwürdige Inhalte
    Status VH e.V.

Gezeigt werden alle Foren bis zur Tiefe 2

Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Dt. Schulen im Ausland: Mathe-Seiten:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Fehlerbehandlung in Matlab
Fehlerbehandlung in Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Fehlerbehandlung in Matlab: input-Befehl i.V.m. try/catch
Status: (Frage) beantwortet Status 
Datum: 00:14 So 20.11.2016
Autor: Marcel08

Hallo zusammen,

ich beschäftige mich gerade mit Fehlerbehandlungen in Matlab. Mein Anliegen würde ich gerne mit Hilfe des folgenden Codes schildern.


ok = 0;
while ok == 0
    try
        x = input('Eingabe: '); % Wenn hier ein Buchstabe eingegeben wird ...
        if (x >= 0 && x <=1)
            disp('Sie haben eine gültige Zahl eingegeben! Ende des Programms!')            
            ok = 1;                  
        else
            disp('Sie haben keine gültige Zahl eingegeben!')  
        end
    catch
        disp('Ungültige Eingabe!') % ... soll im Idealfall diese Fehlermeldung ausgegeben werden. Stattdessen erfolgt überhaupt keine Meldung.
    end
end


Eine kurze Beschreibung des Codes:

Der Benutzer soll eine Zahl eingeben und diese Zahl soll innerhalb eines bestimmten Bereiches liegen (hier exemplarisch zwischen 0 und 1). Gibt der Benutzer eine gültige Zahl ein (bspw. eine 1) so soll ein Hinweis auf eine gültige Eingabe erfolgen und das Programm beendet werden.

Bei einer Eingabe die zwar einer Zahl entspricht, nicht jedoch im gültigen Bereich liegt, soll der Benutzer nach einer entsprechenden Fehlermeldung zur erneuten Eingabe aufgefordert werden. Der Benutzer soll solange erneut zur Eingabe aufgefordert werden, bis eine gültige Zahl eingegeben wird.


Das Problem:

Die try/catch-Anweisung fängt jede denkbare Fehleingabe (Leereingabe, Sonderzeichen, etc.) unter Angabe einer hilfreichen Fehlermeldung korrekt ab. Nur bei der Eingabe von Buchstaben gibt es ein Problem. Hier wird der Benutzer ohne Fehlermeldung sofort zur erneuten Eingabe aufgefordert. Es wird weder der catch-Block aufgegriffen noch die anschließende if-Anweisung durchlaufen.

Verwende ich den input-Befehl ohne try/catch-Block und ohne while-Schleife, wird der Benutzer ebenfalls zur erneuten Eingabe aufgefordert, nachdem eine matlabspezifische Fehlermeldung ausgegeben wurde. D.h. bei Eingabe einer Zahl über die input-Anweisung erfolgt eine Fehlermeldung, das Programm wird aber durch den auftretenden Fehler nicht beendet.


Meine Frage:

Wie kann ich einfach und robust (möglichst ohne reguläre Ausdrücke o.ä.) alle denkbaren Fehleingaben inkl. Buchstaben unter Ausgabe einer passenden Fehlermeldung abfangen bzw. wie kann ich den Code so modifizieren, dass auch bei der Eingabe von Buchstaben eine passende Fehlermeldung geworfen wird?



Vielen Dank im Voraus an alle Interessierten und viele Grüße
Marcel

        
Bezug
Fehlerbehandlung in Matlab: Antwort
Status: (Antwort) fertig Status 
Datum: 09:26 So 20.11.2016
Autor: chrisno

Hallo,
obwohl ich matlab nicht kenne, traue ich mir eine Antwort zu.

catch soll eine Fehlerausgabe von Matlab durch deine eigene ersetzen.
Nun vermute ich, dass input sowohl auch Buchstaben (Variablen?) annimmt. Dann hat Matlab nichts zu meckern, es gibt also keinen Grund catch auszuführen.

Mein Lösungsvorschlag ist nicht elegant:
Füge im try Block noch ein letztes else ein, das die gleiche Reaktion wie das catch ("ungülige Eingabe") zur Folge hat.






Bezug
                
Bezug
Fehlerbehandlung in Matlab: Rückfrage
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 15:21 So 20.11.2016
Autor: Marcel08

Hallo!

Zunächst mal vielen Dank für deine Antwort.


> Hallo,
> obwohl ich matlab nicht kenne, traue ich mir eine Antwort
> zu.
>  
> catch soll eine Fehlerausgabe von Matlab durch deine eigene
> ersetzen.

Richtig. Der Benutzer soll bei der Eingabe von Buchstaben darüber informiert werden, dass nur Zahlen eingegeben werden dürfen, die zudem in einem bestimmten Bereich liegen müssen. Mit der Fehlermeldung an sich soll dann eine erneute Eingabeaufforderung einhergehen.


>  Nun vermute ich, dass input sowohl auch Buchstaben
> (Variablen?) annimmt. Dann hat Matlab nichts zu meckern, es
> gibt also keinen Grund catch auszuführen.

Nein, genau das ist ja der Punkt. Der input-Befehl nimmt keine Buchstaben an. Wenn ich ohne try/catch-Block über den input-Befehl einen Buchstaben eingebe, wirft Matlab eine Fehlermeldung. Das Programm wird aber durch diesen Fehler nicht beendet sondern es kommt direkt zu einer erneuten Eingabeaufforderung. --> Es kommt zwar zu einer Fehlermeldung, die den Benutzer aber nicht konkret darüber informiert, dass keine Buchstaben eingegeben werden dürfen.

Führe ich den input-Befehl in einem try/catch-Block aus und gebe ich einen Buchstaben ein, wird keine Fehlermeldung geworfen. Es kommt dann direkt zur erneuten Eingabeaufforderung. --> Hier wird die Fehlermeldung unterdrückt, sodass der Benutzer nach der Eingabe eines Buchstabens gar nicht weiß, warum es im Programm nicht weiter geht.

Daher nochmal meine Frage: Wie kann ich für den Fall, in dem der Benutzer einen Buchstaben eingibt, sicherstellen, dass eine individuell definierbare Fehlermeldung geworfen wird? Der Benutzer soll konkret darüber informiert werden, dass keine Buchstaben eingegeben werden dürfen.


> Mein Lösungsvorschlag ist nicht elegant:
>  Füge im try Block noch ein letztes else ein, das die
> gleiche Reaktion wie das catch ("ungülige Eingabe") zur
> Folge hat.

Dieser Vorschlag bleibt leider wirkungslos. Gibt der Benutzer über den input-Befehl einen Buchstaben ein, wird im try/catch-Block zwar scheinbar der Fehler aufgefangen, aber nicht die selbstdefinierte Fehlermeldung geworfen; das ist alles sehr merkwürdig. Der gesamte if-Block scheint dagegen vollständig unberührt zu sein.



Nochmals vielen Dank und viele Grüße
Marcel

Bezug
                        
Bezug
Fehlerbehandlung in Matlab: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:06 So 20.11.2016
Autor: chrisno

http://stackoverflow.com/questions/11391776/matlab-try-and-catch-issue

Das Problem liest sich ähnlich und insbesondere die Antwort könnte etwas für Dich sein.

Bezug
                                
Bezug
Fehlerbehandlung in Matlab: Vielen Dank
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:22 Mo 21.11.2016
Autor: Marcel08

Hallo!

> http://stackoverflow.com/questions/11391776/matlab-try-and-catch-issue
>  
> Das Problem liest sich ähnlich und insbesondere die
> Antwort könnte etwas für Dich sein.

Super, damit konnte ich das Problem tatsächlich lösen. Vielen Dank für diese sehr zielführende Recherche.


Viele Grüße
Marcel

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


Alle Foren
Status vor 1h 52m 9. Diophant
ULinASon/Lineare Optimierung
Status vor 1h 54m 5. Gonozal_IX
ULinASon/Lineare Abhängigkeit
Status vor 2h 23m 2. Gonozal_IX
UStoc/Markov Kette: Definitionen
Status vor 23h 24m 2. matux MR Agent
SStatHypo/Welche Verfahren wählen?
Status vor 1d 17h 40m 3. leduart
SPoWi/Produktionsfunktion zeichnen
^ Seitenanfang ^
www.vorhilfe.de