Wie kann man mit Matlab prüfen, ob eine Eingabe korrekt ist?

2 Antworten

Wenn du willst kannst du ja mal deinen Code zeigen, daran lässt sich das vielleicht etwas einfacher erklären. In den try-Block müssen vom Prinzip nur die Anweisungen rein, die das Programm crashen könnten. Wenn innerhalb von diesem Block etwas "schief geht", dann schaut MatLab in den catch-Block und führt den Programmcode aus, der da drin steht.(Wenn man es einmal gebaut hat, ist es eigentlich ziemlich simpel)

In C/C++ (da heißt das Kind dann try-Except) oder Java kann man da noch eine Exception definieren, wo dann festgelegt werden darf, welche Art von Fehler eigentlich abgefangen werden soll. Diese Fehlerselektion ist elegant, aber nicht unbedingt notwendig. So wie ich das sehe ist es bei Matlab ziemlich simpel gehalten, so dass beliebige Fehler abgefangen werden.

Wenn ich es richtig verstanden habe soll der Benutzer bei dir zum Beispiel ein Double eingeben und wenn er dann ein Character oder String eingibt, dann soll das Programm ja nicht crashen, sondern eine Fehlermeldung ausgeben und den Benutzer bitten es nochmal zu versuchen. Sowas in der Richtung soll es sein richtig? Wenn ja, sowas könntest du lösen mit (Achtung Pseudo-Code:)

boolean again=true und dann While(again){...}

und dann in der while-Schleife die try-catch wobei dann ganz am Ende vom try-Block again=false gesetzt wird. (Damit die Schleife bei Erfolg verlassen wird) In den catch kann dann eine print-Anweisung, die den Benutzer auffordert, die Eingabe nochmal zu versuchen. So dass die While-Schleife erst dann verlassen werden kann, wenn alle Anweisungen im try-Block ohne Problem ausfgeführt werden konnten.

Ich geb dir mal ein Beispiel:

Bild zum Beitrag

Hier hab ich einen Code geschrieben, der das zehnfache einer Zahl berechnet. Solange wie ich da eine Zahl eingebe, ist alles gut. Wenn ich einen Character eingebe, crasht das Programm und wirft mir eine Fehlermeldung aus.

Hier ist das ganze mit einer try catch Anweisung:

Bild zum Beitrag

Wenn ich jetzt einen Character eingebe, dann wird die Schleife nochmal ausgeführt und das Programm crasht nicht. Das einzige was ich grad selbst nicht so ganz kapiere ist warum meine disp-Anweisung im catch-Block übersprungen wird. Vermutlich hab ich im Syntax irgendwas nicht beachtet, ich benutze Matlab selbst nicht besonders oft. Aber vom Prinzip her dürfte es glaube ich jetzt etwas klarer werden. So in etwa müsste es gehen.

Woher ich das weiß:Studium / Ausbildung – Ich studiere Ingenieur-Informatik.
 - (Computer, Technik, Technologie)  - (Computer, Technik, Technologie)

Ich denke das könnte mit einer try catch Anweisung umsetzbar sein:

https://de.mathworks.com/help/matlab/matlab_prog/use-trycatch-to-handle-errors.html

In den Try-Block wird die reguläre Anweisung gesetzt, also deine fscanf oder textscan-Anweisung oder was auch immer und in den catch-Block kommt die Anweisung der Ausgabe einer Fehlermeldung, falls der User eine unzulässige Eingabe getätigt hat. Mit try-catch lässt sich eine ganze Reihe von Fehlern abfangen, die während dem Programmablauf allgemein so auftreten können.

Woher ich das weiß:Studium / Ausbildung – Ich studiere Ingenieur-Informatik.
Matcher04 
Fragesteller
 17.06.2020, 16:38

Und muss dann in den try Block auch noch eine andere Anweisung bzw. Schleife womit Matlab weiß nach was es suchen muss? Hab try-catch noch nie benutzt

0