CodeGym /Java-Blog /Random-DE /Alte Ebene 09
John Squirrels
Level 41
San Francisco

Alte Ebene 09

Veröffentlicht in der Gruppe Random-DE

Wissen vs. Fähigkeiten

Alte Ebene 09 - 1Das College hat uns gelehrt, dass es keinen großen Unterschied zwischen Theorie und Praxis gibt. Nun, Sie verstehen sicher, dass das nicht dasselbe ist. Aber Sie sehen den Kernunterschied nicht. Dennoch gibt es einen. Die meisten Menschen setzen das Gleichheitszeichen zwischen „Ich weiß“ und „Ich kann“. Tust du? Wie wäre es mit ein paar Beispielen?
  1. Ich weiß, dass Rauchen schädlich für mich ist, aber ich rauche.
  2. Ich weiß, dass Fastfood schlecht für mich ist, aber ich esse es.
  3. Ich kenne die Verkehrsregeln, kann aber nicht Auto fahren.
  4. Ich weiß, dass Joggen gut für mich ist, aber ich jogge morgens nicht.
Es kommt oft vor, dass Menschen „Ich weiß“ mit „Ich kann“ verwechseln. Es ist ein gutes Beispiel für Verkehrsregeln. Wenn jemand die Vorschriften kennt und weiß, wie man fährt, heißt das, dass er fahren kann? Nö. Was ist, wenn er denkt, dass er Autofahren kann? Warum sollte er also einen Ausbilder brauchen – er weiß bereits alles. Wenn Sie sicher sind, dass Sie bereits alles wissen, werden Sie wahrscheinlich nichts Neues lernen. Und wenn Sie sicher sind, dass Sie alles beherrschen, werden Sie nicht lernen. Ein solcher Gedanke wird Ihnen nicht einmal in den Sinn kommen. Und das bedeutet, dass Sie all die wunderbaren Gelegenheiten verpassen, etwas zu lernen. Ein normales College vermittelt einem nur Wissen; Sie müssen sich die Fähigkeiten selbst aneignen. Aber was höre ich? Du hast an deiner Hochschule neben der Theorie auch Praxis gehabt? Ok, wenn Sie an der Fakultät für Physik studiert habenErstellen Sie ein funktionsfähiges Modell einer Dampfmaschine mit einem Wirkungsgrad von mindestens 20 %. Ich wette, Sie wissen, wie es geht, aber Sie werden es nicht wirklich schaffen, oder? Du bist Chemiker ? Machen Sie rauchfreies Pulver. Du weißt wie, aber du kannst es nicht, ha? Mathematiker, oder? Berechnen Sie die Flugbahn einer Artilleriegranate. Vergessen Sie nicht, die Form der Schale zu berücksichtigen. Mathematische Punkte fliegen im wirklichen Leben nicht. Und es gibt keine kugelförmigen Pferde. Alte Ebene 09 - 2Biologe? Penicillin isolieren. Dieser Schimmel wächst also auf Melonen. Du weißt schon – wunderbar! Kannst du es machen? Ökonom?Erstellen Sie eine Prognose für den Ölpreisanstieg. Erledigt? Und jetzt machen Sie daraus 2.000 oder 200.000 US-Dollar pro Jahr, basierend auf Ihrer Prognose. Haben Sie jemals auf FOREX gespielt? Für echtes Geld? Oder wissen Sie einfach, was es ist? Internationale Wirtschaft? Prächtig! Wo eröffne ich ein Offshore-Unternehmen? In Hongkong, Irland oder in den USA. Warum? Selbst wenn Sie das wissen, was zweifelhaft ist, werden Sie es kaum schaffen, da Sie es nie wirklich getan haben. Du hast nicht einmal die geringste Ahnung, wie das geht. Oh, das hast du nicht auf dem College studiert? Welches Recht habe ich, Ihnen Aufgaben zu übertragen, auf die Sie nicht vorbereitet sind? Denn das sind die Aufgaben des wirklichen Lebens. Diese IS-Praxis , alles, was Sie im College gelernt haben, ist: kugelförmige Pferde, perfekter Wettbewerb – nichts davon existiert im wirklichen Leben. Aber warum habe ich vergessen zu erwähnenMarketingspezialist ? Wie gebe ich meine 500 $ am besten aus, damit möglichst viele Menschen von meinen Vorträgen erfahren? Auf Werbung? Ist Ihnen bewusst, dass nicht nur die klassische Werbung bereits veraltet ist, sondern auch das Konzept des USP (Unique Selling Proposition), das Ihnen sicher im Studium als nahezu einzigartiges Allheilmittel beigebracht wurde? Vergiss, dass du irgendetwas weißt. Fragen Sie sich: Was kann ich tun? Nützlich, meine ich? Etwas, wofür die Leute Geld bezahlen würden? Gutes Geld, meine ich? Also Freunde, lasst uns einem so wunderbaren Kurs wie CodeGym danken. Dadurch werden Sie nicht nur wissen, wie man programmiert, sondern Sie werden es auch tatsächlich tun können. Auch Sie werden in ein paar Jahren einen Job finden und gutes Geld verdienen können. Ich hoffe, dass dieses Geld ausreicht, um schön und gemütlich zu leben. Ich sage es noch einmal, damit Sie sich daran erinnern: Es spielt keine Rolle, was Sie wissen. Das Einzige, was zählt, sind Ihre nützlichen Fähigkeiten, die die Leute Ihnen gerne bezahlen würden. Je früher Sie das verstehen, desto besser.

Du hast ein neues Level erreicht

Stufe 9

Alte Ebene 09 - 3

1 Risha, Stapelverfolgung

Alte Ebene 09 - 4- Hey! Heute erzähle ich Ihnen, was der Stacktrace ist. Aber zuerst möchte ich Ihnen erklären, was der Stapel ist. - Stellen Sie sich einen Stapel Papiere vor – Aufgaben für einen bestimmten Sachbearbeiter. Eine neue Aufgabe kann oben auf den Stapel gelegt werden und er nimmt eine Aufgabe von oben auf den Stapel. Daher werden die Aufgaben nicht nach dem Prinzip „Wer zuerst kommt“ vergeben. Jedes Mal übernimmt der Sachbearbeiter den Auftrag, der zuletzt kommt. Eine solche Sammlungsstruktur wird Stapel genannt . In Java gibt es eine spezielle Sammlung – Stack. Diese Sammlung verfügt über die Methoden „ein Element hinzufügen“ und „ein Element nehmen (holen/wegnehmen)“. Wie Sie bereits wissen, wird das zuletzt hinzugefügte Element zuerst übernommen. - Hmm. Es ist nicht schwierig, denke ich. - Bußgeld. Dann lassen Sie mich erklären, was ein Stack-Trace istIst. - Stellen Sie sich vor, dass in Java die Funktion A die Funktion B aufruft und diese wiederum die Funktion C aufruft , die wiederum die Funktion D aufruft . Um Funktion B zu verlassen , müssen Sie also zuerst Funktion C verlassen , und dazu müssen Sie Funktion D verlassen . Dies ist einem Stapel sehr ähnlich. - Und was ist die Ähnlichkeit? - Um zu einer bestimmten Aufgabe im Stapel zu gelangen, müssen Sie auch alle oben liegenden Aufgaben erledigen. - Nun, es ist irgendwie eine Analogie, aber ich bin mir nicht sicher, ob ich alles richtig verstehe. - Schau hier. In Java ist ein Stapel eine Menge von Elementen. Es ist wie ein Stapel Papier. Um das dritte Blatt von oben zu nehmen, müssen Sie das zweite Blatt nehmen, aber vorher müssen Sie das erste nehmen. Sie können Blätter immer einlegen und herausnehmen, aber Sie können sie nur oben auflegen und nur von oben nehmen. Gleiches gilt für den Funktionsaufruf. Funktion A ruft Funktion B auf , letztere ruft Funktion C auf . Um A zu verlassen , müssen Sie zuerst B verlassen , und dazu müssen Sie C verlassen . - Warten Sie eine Minute. Wenn ich es richtig gemacht habe, ergibt sich für den gesamten Stapel „nur das letzte Blatt, das auf den Stapel gelegt wurde, kann genommen werden“ und „Zuerst sollte die zuletzt aufgerufene Funktion beendet werden“. Ist das so? - Ja. Die Reihenfolge der Funktionsaufrufe ist also der „Funktionsaufrufstapel“ oder einfach „Aufrufstapel“. Die zuletzt aufgerufene Funktion muss zuerst beendet werden. Schauen wir uns das Beispiel an: Alte Ebene 09 - 5- OK. Mit dem Funktionsaufruf ist wohl alles klar. Aber was ist dieses StackTraceElement ? - Die Java Virtual Machine protokolliert alle Funktionsaufrufe. Zu diesem Zweck verfügt es über einen speziellen Sammelstapel. Wenn eine Funktion eine andere aufruft, platziert JVM ein neues Element StackTraceElement in diesem Stapel. Wenn die Funktion endet, wird das Element vom Stapel gelöscht. Somit speichert dieser Stack stets aktuelle Informationen über den aktuellen Zustand des «Function Call Stacks». - Jedes StackTraceElemententhält Informationen zur aufgerufenen Methode. Sie können den Namen dieser Methode also mit getMethodName ermitteln . - Das obige Beispiel zeigt es:
  1. Holen Sie sich den „Call Stack“:
  2. Iterieren Sie das Array mit der Schleife for-each . Ich hoffe, du hast es nicht vergessen.
  3. Methodennamen in System.out ausgeben .
- Eine interessante Sache und anscheinend einfach. Danke, Risha!

2 Diego, Aufgabe zur Stack-Trace-Anzeige

- Hey, Amigo! Hier ist eine kleine Aufgabe, um einen Stack-Trace auf dem Bildschirm anzuzeigen.
Aufgaben
1 Jede Methode sollte ihren StackTrace zurückgeben.
Schreiben Sie fünf Methoden, die sich gegenseitig aufrufen. Jede Methode sollte ihren StackTrace zurückgeben.
2 StackTrace schreibt erneut
fünf Methoden, die sich gegenseitig aufrufen. Jede Methode sollte den Namen ihrer aufrufenden Methode zurückgeben. Sie können die Aufrufmethode mit StackTrace abrufen.
3 Die Methode sollte die Zeilennummer des Codes zurückgeben, von dem aus diese Methode aufgerufen wurde.
Schreiben Sie fünf Methoden, die sich gegenseitig aufrufen. Jede Methode sollte die Zeilennummer des Codes zurückgeben, von dem aus diese Methode aufgerufen wurde. Verwenden Sie die Funktion element.getLineNumber() .
4 Stack-Trace von 10 Aufrufen
Schreiben Sie Code, um einen Stack-Trace von 10 Aufrufen zu erhalten.
5 Die Methode sollte ein Ergebnis zurückgeben – ihre Stack-Trace-Tiefe.
Schreiben Sie eine Methode, die ihre Stack-Trace-Tiefe anzeigt und zurückgibt. Die Stack-Trace-Tiefe ist die Anzahl seiner Methoden (die Anzahl der Elemente in der Liste).

3 Elly, Fehler und Ausnahmen

- Hey, Amigo! Heute haben wir eine sehr interessante Lektion. Ich erzähle Ihnen von Ausnahmen. Eine Ausnahme ist ein spezieller Mechanismus zur Fehlerkontrolle im Programm. Hier sind einige Beispiele für Fehler, die im Programm auftreten können:
  1. Das Programm versucht, eine Datei auf die volle Festplatte zu schreiben.
  2. Das Programm versucht, eine Methode einer Variablen aufzurufen, die die Nullreferenz speichert.
  3. Das Programm versucht, eine Zahl durch 0 zu dividieren.
Diese Aktionen führen zu einem Fehler. Normalerweise führt dies zum Schließen eines Programms – es macht keinen Sinn, den Code weiter auszuführen. - Warum das? - Ist es sinnvoll, das Lenkrad zu drehen, wenn das Auto von einer Klippe fällt? - Meinen Sie, das Programm sollte enden? - Ja. So war es früher. Jeder Fehler führte zum Abbruch eines Programms. - Es ist eine sehr kluge Entscheidung. - Wäre es nicht besser, zu versuchen, daran zu arbeiten? - Ja. Sie haben einen riesigen Text in MS Word eingegeben, ihn gespeichert, er wurde nicht gespeichert, aber das Programm sagt Ihnen, dass alles in Ordnung ist. Und Sie tippen weiter. Blöd, nicht wahr? - Ja. - Dann haben sich Programmierer einen interessanten Schachzug ausgedacht:Jede Funktion gab den Status ihrer Arbeit zurück. 0 bedeutete, dass die Funktion ordnungsgemäß funktionierte, jeder andere Wert bedeutete, dass ein Fehler aufgetreten ist : Dieser Wert war ein Fehlercode. - Dieser Ansatz hatte jedoch einen Nachteil. Nach jedem (!) Funktionsaufruf musste man den von der Funktion zurückgegebenen Code (Nummer) überprüfen. Erstens war es unpraktisch: Der Fehlerbehandlungscode wurde selten ausgeführt, aber man musste ihn immer schreiben. Zweitens geben die Funktionen selbst oft unterschiedliche Werte zurück – was tun mit ihnen? - Ja. Das wollte ich fragen. - Dann kam eine glänzende Zukunft - Ausnahmen und Fehlerbehandlung waren aufgetaucht. So funktioniert das:
  1. Wenn ein Fehler auftritt, erstellt die Java Virtual Machine ein spezielles Objekt – eine Ausnahme –, das alle Informationen über den Fehler enthält. Für unterschiedliche Fehler gibt es unterschiedliche Ausnahmen.
  2. Dann zwingt diese Ausnahme das Programm, die aktuelle Funktion und die nächste Funktion sofort zu unterbrechen, bis es die Hauptmethode verlässt. Danach wird das Programm beendet. Java-Entwickler nennen diesen Prozess „Rollback des Aufrufstapels“.
- Aber Sie haben gesagt, dass das Programm mit Sicherheit nicht beendet wird. - Das ist richtig, denn es gibt eine Möglichkeit, die Ausnahme abzufangen. Sie können jederzeit und überall einen speziellen Code schreiben, um diese Ausnahmen abzufangen und etwas Wichtiges zu tun. - Dazu gibt es eine spezielle Konstruktion try-catch . Schauen Sie, wie es funktioniert: Alte Ebene 09 - 6- Warum «Nach dem Aufruf von Methode1. Wird nie angezeigt» wird nicht auf dem Bildschirm angezeigt? - Ich freue mich, dass Sie danach gefragt haben. In Zeile 25 erfolgt eine Division durch Null. Dies führt zu einem Fehler – einer Ausnahme. Die Java Virtual Machine hat das Objekt ArithmeticException erstellt , das die Fehlerinformationen enthält. Dieses Objekt ist eine Ausnahme. – In der Methode method1() ist eine Ausnahme aufgetreten .Dies führte zum sofortigen Abbruch der Methode. Es würde auch zum Abbruch der Methode main führen , wenn es keinen Try-Catch- Block gäbe. – Wenn eine Ausnahme innerhalb des Try-Blocks auftritt, wird sie im Catch- Block abgefangen. Der Rest des Codes im Block- Try wird nicht ausgeführt, die Ausführung des Block- Catch beginnt sofort. - Ich verstehe es nicht ganz. - Mit anderen Worten, dieser Code funktioniert folgendermaßen:
  1. Wenn innerhalb des Try- Blocks eine Ausnahme auftritt , wird der Code in diesem Block nicht mehr ausgeführt, sondern die Ausführung des Block- Catch beginnt.
  2. Wenn keine Ausnahme aufgetreten ist, wird der Try-Block bis zum Ende ausgeführt und Catch wird nie ausgeführt .
- Ähm! - Stellen Sie sich vor, dass wir nach jedem Methodenaufruf prüfen, ob die aufgerufene Methode von selbst oder aufgrund einer Ausnahme beendet wurde. Wenn eine Ausnahme aufgetreten ist, beginnt die JVM mit der Ausführung des Blockfangs, sofern dieser verfügbar ist, und fängt eine Ausnahme ab. Wenn kein Catch-Block vorhanden ist, beendet JVM die aktuelle Methode. Dann beginnt die gleiche Prüfung in der Methode, die die aktuelle Methode aufgerufen hat. - Jetzt glaube ich, dass ich es verstanden habe. - Das ist in Ordnung. - Und was ist diese Ausnahme im Catch-Block? Alle Ausnahmen sind von der Klasse Exception geerbte Klassen. Wir können jeden von ihnen fangen, indem wir seine Klasse im Catch angebenBlock oder alle auf einmal durch Angabe einer gemeinsamen übergeordneten Klassenausnahme. Dann können Sie aus der Variablen e (diese Variable speichert die Referenz eines Ausnahmeobjekts) alle notwendigen Informationen über den Fehler erhalten. - Großartig! Und wenn in meiner Methode unterschiedliche Ausnahmen auftreten, kann ich sie dann auf unterschiedliche Weise behandeln? - Sie müssen. Das können Sie folgendermaßen machen: Alte Ebene 09 - 7- Der Try-Block kann mehrere Catch- Blöcke enthalten, von denen jeder Ausnahmen seines Typs abfängt. - Ähm. Nun, ich habe es irgendwie verstanden. Natürlich werde ich so etwas nicht selbst schreiben. Ich werde jedoch keine Angst haben, wenn ich auf solchen Code stoße.

4 Elly, RuntimeException, löst aus

Alte Ebene 09 - 8- Ich habe beschlossen, heute ein anderes Thema anzusprechen. In Java werden alle Ausnahmen in zwei Typen unterteilt – kontrolliert/geprüft und unkontrolliert/ungeprüft . Geprüfte Ausnahmen müssen abgefangen werden, ungeprüfte Ausnahmen können abgefangen werden, aber das ist nicht erforderlich . - Ist es möglich, absichtlich Ausnahmen in einem Code auszulösen? - In Ihrem Code können Sie selbst Ausnahmen auslösen. Sie können sogar Ihre eigenen Ausnahmen schreiben. Aber wir werden später tief in dieses Loch eindringen. Lassen Sie uns nun lernen, wie Sie mit den von der Java Virtual Machine ausgelösten Ausnahmen arbeiten. - OK. - Bei Ausnahmen ClassNotFoundException und FileNotFoundExceptionWerden in einer Methode geworfen (erscheinen), muss der Programmierer sie in der Signatur einer Methode (Methodenheader) angeben. Solche Ausnahmen werden geprüft. So sieht es normalerweise aus: Alte Ebene 09 - 9- Wir schreiben also einfach durch Kommas getrennte Würfe und listen Ausnahmen auf. Rechts? Ist das so? - Ja. Aber es gibt noch eine andere interessante Sache. Damit das folgende Beispiel kompiliert wurde, muss die Methode, die method1() aufruft, diese Ausnahmen entweder abfangen oder weiterleiten. Wenn Sie eine geprüfte Ausnahme weiterleiten möchten, müssen Sie sie im Header der Methode angeben . - Noch einmal: Wenn Sie in der Hauptmethode eine Methode aufrufen möchten, deren Header-Phrase FileNotFoundException auslöst , …Dann müssen Sie eines dieser beiden Dinge tun:
  1. Um Ausnahmen wie FileNotFoundException abzufangen,
    müssen Sie den Code dort, wo Sie eine gefährliche Methode aufrufen, mit einem Try-Catch- Block umschließen
  2. Ausnahmen FileNotFoundException nicht abfangen , …
Sie müssen diese Ausnahmen zur throws- Liste Ihrer Methode main hinzufügen . - Können Sie mir ein Beispiel geben? - Schauen Sie hier: Alte Ebene 09 - 10- Dieses Beispiel wird nicht kompiliert, da die Methode main die Methode method1() aufruft, die Ausnahmen auslöst, die abgefangen werden müssen. - Damit das Beispiel kompiliert wird, müssen Sie der Methode main eine Ausnahmebehandlung hinzufügen . Sie können dies auf zwei Arten tun: Alte Ebene 09 - 11- Und hier fangen wir es mit Try-Catch ab : Alte Ebene 09 - 12- Es wird klarer, aber sehr wenig. - Schauen Sie sich das folgende Beispiel an: Alte Ebene 09 - 13- Es gibt immer noch eine Ausnahme – RuntimeException und davon geerbte Klassen.Es ist nicht erforderlich, sie zu fangen oder zu werfen. Es handelt sich hierbei um ungeprüfte Ausnahmen. Diese Ausnahmen gelten als schwer vorhersehbar, sodass es nahezu unmöglich ist, ihr Auftreten vorherzusagen. Sie können mit ihnen die gleichen Dinge tun, aber es ist nicht nötig, sie in throws anzugeben .

5 Risha, Rollen des Aufrufstapels, wie man es in Ausnahmefällen macht

- Ich möchte Ihnen etwas mehr darüber erzählen, wie Ausnahmen funktionieren. Das folgende Beispiel erklärt Folgendes: Alte Ebene 09 - 14- Ich verstehe es nicht. - OK. Ich werde erklären, was los ist. - Im Beispiel links rufen wir mehrere Methoden in Kettenreihenfolge auf. In method2() erstellen und werfen wir gezielt eine Ausnahme (um einen Fehler auszulösen). - Das Beispiel rechts zeigt, was passiert. Schauen Sie sich die Methode2() an . Das ist, was die Erstellung einer Ausnahme ausmacht: Wir erstellen ein Objekt vom Typ RuntimeException , speichern es in einer speziellen Variablen Ausnahme und verlassen sofort die Methode – return . - In Methode1 erfolgt nach dem Aufruf von Methode2 eine Prüfung,ob es eine Ausnahme gibt oder nicht; Wenn es eine Ausnahme gibt, wird Methode1 sofort beendet. Diese Prüfung erfolgt implizit nach dem Aufruf jeder (!) Java-Methode. - Wow! - Exakt. - In der Spalte rechts in der Methode main habe ich geschrieben, was passiert, wenn eine Ausnahme vom Try-Catch- Block abgefangen wird. Wenn es keine Ausnahme gab, wird der Code weiterhin wie geplant ausgeführt. Wenn es eine Ausnahme des in „catch“ angegebenen Typs gab , behandeln wir diese. - Und was bedeuten „throw“ und „instanceof“ ? - Schauen Sie sich die letzte Zeile auf der linken Seite an und werfen Sie neue RuntimeException(s) auf.. Auf diese Weise erstellen und lösen wir eine Ausnahme. Dies ist nur ein Beispiel. Wir werden es bisher nicht tun. - Mit dem Befehl „ eine Instanz von B “ im rechten Block prüfen wir, ob das Objekt a den Typ B hat . Das heißt, ob das in der Ausnahmevariable gespeicherte Objekt den Typ RuntimeException hat . Es ist ein logischer Ausdruck. - Nun, es wird etwas klarer.

6 Diego, Ausnahmefangaufgabe

- Schau hier! Onkel Diego hat für Sie einige Aufgaben zum Fangen mitgebracht. Wünsch dir Glück. Ich denke, du wirst es brauchen. Heh. Alte Ebene 09 - 15- Hey, Amigo! Hier sind einige interessante Aufgaben zum Abfangen von Ausnahmen.
Fangaufgaben
1 1. Ausnahme beim Arbeiten mit Zahlen
Fangen Sie die Ausnahme ab, die beim Ausführen des Codes auftritt:
int a = 42 / 0;
Zeigen Sie die Ausnahme auf dem Bildschirm an und geben Sie ihren Typ an
2 2. Ausnahme beim Betrieb mit Zeichenfolgen
Fangen Sie die Ausnahme ab, die beim Ausführen des Codes auftritt:
String s = null;
String m = s.toLowerCase();
Zeigen Sie die Ausnahme auf dem Bildschirm an und geben Sie ihren Typ an.
3 3. Ausnahme beim Arbeiten mit Arrays
Fangen Sie die Ausnahme ab, die beim Ausführen des Codes auftritt:
int[] m = new int[2];
m[8] = 5;
Zeigen Sie die Ausnahme auf dem Bildschirm an und geben Sie ihren Typ an.
4 4. Ausnahme beim Betrieb mit Listensammlungen
Fangen Sie die Ausnahme ab, die beim Ausführen des Codes auftritt:
ArrayList<String> list = new ArrayList<String>();
String s = list.get(18);
Zeigen Sie die Ausnahme auf dem Bildschirm an und geben Sie ihren Typ an.
5 5. Ausnahme beim Betrieb mit Kartensammlungen
Fangen Sie die Ausnahme ab, die auftritt, wenn der Code ausgeführt wird:
HashMap<String, String> map = new HashMap<String, String>(null);
map.put(null, null);
map.remove(null);
Zeigen Sie die Ausnahme auf dem Bildschirm an und geben Sie ihren Typ an.
- Tipp: Schreiben Sie zuerst ein Programm, sehen Sie dann, welche Ausnahme auftritt, ändern Sie anschließend den Code und fangen Sie diese Ausnahme ab.

7 Risha, Wie Mehrfachfang funktioniert

Alte Ebene 09 - 16- Jetzt noch ein paar interessante Vorträge. Mir macht das Unterrichten so viel Spaß. - Ich möchte Ihnen erklären, wie ein Mehrfachfang funktioniert . Eigentlich ist es ganz einfach: Wenn im Block try eine Ausnahme auftritt , wird die Programmausführung an den ersten Catch übergeben . – Wenn der in Klammern des Blockfangs angegebene Typ mit dem Typ des Ausnahmeobjekts übereinstimmt, beginnt die Codeausführung innerhalb von {}. Ansonsten gehen wir zum nächsten Fang . Dort wird die Prüfung wiederholt. – Wenn keine Catch- Blöcke mehr vorhanden sind , die Ausnahme aber nicht abgefangen wurde, wird sie nach vorne geworfen und die aktuelle Methode wird unterbrochen. - Ich verstehe. Es wird der Catch ausgeführt, dessen Typ mit dem Typ der Ausnahme übereinstimmt. - Ja richtig. Eigentlich ist es etwas komplizierter: Der Punkt ist, dass die Klassen voneinander vererbt werden können. Wenn die Klasse „Cow“ von der Klasse „Animal“ geerbt wird, kann das Objekt vom Typ „Cow“ nicht nur in einer Variablen vom Typ „Cow“, sondern auch in einer Variablen vom Typ „Animal“ gespeichert werden . - Na und? – Da alle Ausnahmen von den Klassen Exception oder RuntimeException (die auch von Exception geerbt werden) geerbt werden, können sie alle mit den Befehlen „ catch (Exception e)“ oder „catch (RuntimeException e)“ abgefangen werden . - Na und? - Das bedeutet, dass,Zunächst können Sie jede Ausnahme mit dem Befehl „catch(Exception e)“ abfangen . Zweitens ist die Reihenfolge der Catch -Blöcke wichtig. Beispiele:ArithmeticException , die aus einer Division durch 0 resultiert, wird im zweiten Catch abgefangen. Alte Ebene 09 - 17– Im folgenden Beispiel wird ArithmeticException im ersten Catch abgefangen , da die Klassen aller Ausnahmen von Exception geerbt werden. Exception fängt also jede Ausnahme ab . Alte Ebene 09 - 18- Im folgenden Beispiel wird die Ausnahme ArithmeticException nicht abgefangen, sondern an die aufrufende Methode weitergeleitet. Alte Ebene 09 - 19- Nun, jetzt wird es klarer. Diese Ausnahmen sind nicht so einfach. - Es scheint nur so. Tatsächlich ist es eines der einfachsten Dinge in Java. - Ich bin mir nicht sicher, ob ich mich darüber freuen oder verärgern soll ...

8 Diego, Mehrere Ausnahmeabfangaufgaben

- Hey, Amigo! Gestern habe ich mich betrunken und deine Aufgaben zu kompliziert gemacht, aber ich hoffe, dass du keine bösen Gefühle hast und du sie alle lösen wirst? Es ist zu deinem Besten. Hier:
Aufgaben
1 1. Ausnahmen
Es gibt eine Methode, die zwei von Exception und die anderen beiden von RuntimeException geerbte Ausnahmen auslöst : NullPointerException , ArithmeticException , FileNotFoundException und URISyntaxException .

Sie müssen NullPointerException und FileNotFoundException abfangen , aber nicht ArithmeticException und URISyntaxException . Wie es geht?
2 2. Ausnahmen abfangen
Es gibt drei Ausnahmen, die nacheinander von Exception geerbt werden :
Klasse Exception1 erweitert Exception
Klasse Exception2 erweitert Exception1
Klasse Exception3 erweitert Exception2
Es gibt eine Methode, die wie folgt beschrieben wird:
public static void method1() throws Exception1, Exception2, Exception3

Einen Catch schreiben Block, um alle drei Exception1 , Exception2 und Exception3 abzufangen
3 3. Selektive Ausnahmen abfangen
1. Finden Sie heraus, welche Ausnahmen von der Methode BEAN.methodThrowExceptions ausgelöst werden .
2. Die Methode processExceptions() soll die Methode BEAN.methodThrowExceptions aufrufen und Ausnahmen behandeln:
2.1. Wenn eine FileSystemException- Ausnahme auftritt, protokollieren Sie sie, indem Sie die Methode BEAN.log aufrufen und 2.2 weiterleiten
. Wenn eine Ausnahme „CharConversionException“ oder eine andere IOException auftritt, protokollieren Sie sie einfach durch Aufrufen der Methode BEAN.log
3. Fügen Sie die Klasse/den Typ der Ausnahme hinzu, die Sie in 2.1 weiterleiten. zu den ProcessExceptions()Methodensignatur.
4. Behandeln Sie die verbleibende Ausnahme in der Methode main() und protokollieren Sie sie. Verwenden Sie try..catch.

Tipp:
Wenn Sie die Ausnahme MyException abgefangen haben , die Sie nicht abfangen wollten, können Sie sie mit dem folgenden Code nach vorne werfen:
Catch (MyException e) {
throw e;
}
4 4. Geprüfte Ausnahmen abfangen
Behandeln Sie alle geprüften Ausnahmen in der Methode processExceptions() .
Sie müssen jede aufgetretene überprüfte Ausnahme auf dem Bildschirm anzeigen.
Sie dürfen nur einen Block try verwenden .
5 5. Ungeprüfte Ausnahmen abfangen
Behandeln Sie alle ungeprüften Ausnahmen in der Methode processExceptions() . Sie müssen mit der Methode printStack()
einen Stack-Trace jeder aufgetretenen Ausnahme auf dem Bildschirm anzeigen . Sie dürfen nur einen Block try verwenden .

9 Professor, Vorlesung über Ausnahmen

- Heute haben wir ein superinteressantes Thema – Ausnahmen. Damals, als junge Wissenschaftler und Programmierer sich zutiefst für dieses Thema begeisterten ... - Entschuldigung, ich muss ins Labor. Hier finden Sie Vorlesungsunterlagen. Ich denke, Sie werden es selbst herausfinden. Hier: Java-Ausnahmen (Oracle-Dokumentation) Ausnahmebehandlung in Java (Java T-Punkt) Java – Ausnahmebehandlung (Tutorials-Punkt) Grundlegende Java-Ausnahmebehandlung

10. Juli

- Amigo, was hältst du von der heutigen Lektion? Hat Ihr Positronengehirn noch nicht funktioniert? Diegos Aufgaben reichen aus, um jeden zu zermürben. Lasst uns einen Moment Bier trinken und entspannen. Stehst du noch?

11 Kapitän Eichhörnchen

- Hallo, Soldat! - Guten Morgen mein Herr! - Ich habe tolle Neuigkeiten für Sie. Hier ist ein kurzer Check, um Ihre Fähigkeiten zu stärken. Machen Sie es jeden Tag und Sie werden Ihre Fähigkeiten sehr schnell verbessern. Aufgaben sind speziell für die Ausführung in Intellij IDEA konzipiert.
Zusätzliche Aufgaben in Intellij Idea
1 1. Division durch Null
Erstellen Sie eine Methode public static void DivisionByZero() , bei der Sie eine beliebige Zahl durch Null dividieren und das Ergebnis der Division auf dem Bildschirm anzeigen müssen.
Wickeln Sie den Aufruf der DivisionByZero() -Methode in einen try..catch ein . Zeigen Sie den Ausnahme-Stack-Trace mit der MethodeException.printStackTrace() auf dem Bildschirm an .
2 2. Countdown von 10 auf 0
Schreiben Sie eine Schleife, um von 10 auf 0 herunterzuzählen. Verwenden Sie Thread.sleep(100) , um eine Verzögerung vorzunehmen;
Wickeln Sie den Sleep- Aufruf in einen try..catch ein .
3 3. Wickeln Sie eine Methode in einen try..catch ein.
Lesen Sie Zahlen von der Tastatur. Schreiben Sie einen Code zum Lesen von Zahlen von der Tastatur in eine separate Methode readData() .
Wickeln Sie den gesamten Körper dieser Methode (den gesamten Code innerhalb der Methode readData() , mit Ausnahme der Deklaration der Liste, in der die Zahlen gespeichert werden) in einen try..catch ein .

Wenn der Benutzer Text anstelle einer Zahl eingibt, muss die Methode die Ausnahme abfangen und alle zuvor eingegebenen Zahlen auf dem Bildschirm anzeigen.
Zahlen auf dem Bildschirm anzeigen. Jede Zahl sollte in einer neuen Zeile stehen. Die Reihenfolge der Zahlen sollte genauso sein wie bei der Eingabe.
4 4. Datumskonverter
Lesen Sie von der Tastatur ein Datum im Format „18.08.2013“ ab.
Zeigen Sie dieses Datum im Format „18. AUGUST 2013“ auf dem Bildschirm an.
Verwenden Sie die Objekte Date und SimpleDateFormat .
5 5. Vokale und Konsonanten
Schreiben Sie ein Programm, das Zeilen von der Tastatur liest.
Das Programm sollte auf dem Bildschirm zwei Zeichenfolgen anzeigen:
1) Die erste Zeichenfolge sollte Vokale enthalten.
2) Die zweite Zeichenfolge sollte Konsonanten und Satzzeichen aus dem eingegebenen Text enthalten.
Trennen Sie Zeichen durch Leerzeichen.

Beispieleingabe:
Stop Look Listen
Beispielausgabe:
oooie
stplklstn
6 6. Das Märchen vom Rotkäppchen
1. Es gibt fünf Klassen: Rotkäppchen, Großmutter, Patty, Holzfäller, Wolf.
2. Jede Klasse verfügt über zwei Felder vom Typ ArrayList : killed und ate.
3. Notwendige Objekte sind bereits angelegt (Kapuze, Großmutter, ...).
4. Stellen Sie die richtige Beziehung her (wer hat wen gefressen und getötet), um die Logik des „Rotkäppchens“ zu verstehen.
7 7. Statische Änderungen verschieben
Verschieben Sie statische Modifikatoren, damit der Code kompiliert wird.
8 8. Liste von Zahlenarrays
Erstellen Sie eine Liste, deren Elemente Zahlenarrays sind. Fügen Sie der Liste fünf Objektarrays mit den Längen 5, 2, 4, 7 bzw. 0 hinzu. Füllen Sie Arrays mit beliebigen Daten und zeigen Sie diese auf dem Bildschirm an.
9 9. Zehn Katzen
Erstellen Sie eine Klasse Cat mit einem Feld String name .
Erstellen Sie ein Wörterbuch Map<String, Cat> und fügen Sie 10 Katzen zum Modell „Name“ – „Cat“ hinzu.
Holen Sie sich aus der Karte einen Satz von Namen und zeigen Sie den Satz auf dem Bildschirm an.
- Diese Aufgaben waren für die Grünen. Ich habe Bonusaufgaben höherer Komplexität hinzugefügt. Nur für Top-Waffen.
Bonusaufgaben
1 1. Das Programm lässt sich nicht kompilieren und ausführen. Repariere es.
Aufgabe: Das Programm soll zwei Dateinamen von der Tastatur lesen und die erste Datei an den durch den zweiten Namen angegebenen Speicherort kopieren.
2 2. Fügen Sie dem Programm neue Funktionen hinzu.
Alte Aufgabe: Das Programm sollte zwei Dateinamen von der Tastatur lesen und die erste Datei an den durch den zweiten Namen angegebenen Speicherort kopieren.
Neue Aufgabe: Das Programm soll von der Tastatur zwei Dateinamen lesen und die erste Datei an den durch den zweiten Namen angegebenen Speicherort kopieren.

Wenn die Datei (die kopiert werden soll) mit dem angegebenen Namen nicht existiert, sollte das Programm auf dem Bildschirm die Meldung „Datei existiert nicht“ anzeigen und erneut versuchen, den Dateinamen von der Konsole zu lesen, bevor es die Datei liest Name der zweiten (Ziel-)Datei.
3 3. Algorithmus lernen und üben.
Lesen Sie die Liste der Wörter und Zahlen auf der Tastatur vor. Zeigt Wörter in aufsteigender Reihenfolge und Zahlen in absteigender Reihenfolge auf dem Bildschirm an.

Beispieleingabe:
Kirsche
1
Bohne
3
Apfel
2
0
Wassermelone

Beispielausgabe:
Apfel
3
Bohne
2
Kirsche
1
0
Wassermelone
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION