JavaScript für Ungeduldige. Cay Horstmann
Чтение книги онлайн.
Читать онлайн книгу JavaScript für Ungeduldige - Cay Horstmann страница 25
In JavaScript kann eine Methode auch einen alternativen Exit-Pfad nehmen, wenn sie nicht in der Lage ist, ihre Aufgabe auf reguläre Weise zu erledigen. Anstatt einen Wert zurückzugeben, kann sie auch eine Exception auslösen. In diesem Fall wird die Ausführung nicht mit dem Code fortgesetzt, der die Methode aufgerufen hat. Stattdessen wird eine catch-Klausel ausgeführt. Wird diese Exception nirgendwo mit einer solchen Klausel abgefangen, wird das Programm beendet.
Um eine Exception abzufangen, verwenden Sie die Anweisung try. In ihrer einfachsten Form sieht sie wie folgt aus:
try {
Code
mehr Code
noch mehr Code
} catch {
Handler
}
Der der Code an irgendeiner Stelle innerhalb des try-Blocks eine Exception auslöst, überspringt das Programm den Rest des Blocks und führt stattdessen den Handler-Code in der catch-Klausel aus.
Nehmen wir zum Beispiel an, Sie wollen einen empfangenen JSON-String parsen. Der Aufruf von JSON.parse löst eine Exception aus, wenn das Argument kein gültiger JSON-Code ist. Diese Exception können Sie in der catch-Klausel behandeln:
let input = ... // Liest eine Eingabe aus irgendeiner Quelle
try {
let data = JSON.parse(input)
// Wird die Ausführung hier fortgesetzt, ist die Eingabe gültig
// Verarbeitet die Daten
...
} catch {
// Kümmert sich darum, dass die Eingabe ungültig ist
...
}
Im Handler können Sie die Information protokollieren, dass Ihnen ein ungültiger JSON-String übergeben wurde, oder sonstige Maßnahmen treffen, um mit dem Problem umzugehen.
In Kapitel 3 sehen wir uns noch weitere Varianten von try-Anweisungen an, die Ihnen mehr Kontrolle über die Behandlung von Exceptions geben. Dort lernen Sie auch, wie Sie eigene Exceptions auslösen.
2.13Übungen
1 Browserkonsolen und die REPL von Node.js zeigen Werte an, wenn Sie Anweisungen eingeben. Welche Werte werden bei den folgenden Anweisungen ausgegeben?AusdrucksanweisungenVariablendeklarationenBlockanweisungen mit mindestens einer AnweisungLeere Blockanweisungenwhile-, do- oder for-Schleifen, deren Rumpf mindestens einmal ausgeführt wirdSchleifen, deren Rumpf nie ausgeführt wirdif-Anweisungentry-Anweisungen, die regulär beendet werdentry-Anweisungen, deren catch-Klausel ausgeführt wird
2 Was ist bei der folgenden Anweisung falsch?if (x === 0) console.log('zero') else console.log('nonzero')Wie lösen Sie das Problem?
3 Gegeben sei die folgende Anweisung:let x = aWelche Token am Anfang der nächsten Zeile können verhindern, dass ein Semikolon ergänzt wird? Welche können in einem Programm realistischerweise vorkommen?
4 Was ergeben Vergleiche von undefined, null, 0 und '' mit den Operatoren <, <= und ==? Warum ist das so?
5 Ist a || b unabhängig vom Typ von a und b immer dasselbe wie a ? a : b? Warum oder warum nicht? Geht das auch mit a && b?
6 Verwenden Sie die drei Arten von for-Schleifen, um den größten Wert in einem Array aus Zahlen zu finden!
7 Betrachten Sie folgenden Code:let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]for (i in arr) { if (i + 1 === 10) console.log(a[i]) }Warum wird hierbei nichts ausgegeben?
8 Schreiben Sie eine switch-Anweisung, die die Ziffern 0 bis 9 in ihre englischen Bezeichnungen 'zero' bis 'nine' umwandelt. Wie können Sie dasselbe auch ganz einfach ohne switch erledigen? Wie sieht es mit der Rückverwandlung aus?
9 Sei n eine Zahl zwischen 0 und 7. Setzen Sie die Array-Elemente arr[k] bis arr[k + n - 1] auf 0. Verwenden Sie dazu eine switch-Anweisung mit Durchlauf.
10 Schreiben Sie die do-Schleife aus Abschnitt 2.9 »while- und do-Schleifen« als while-Schleife um.
11 Schreiben Sie alle for-Schleifen aus Abschnitt 2.10 »for-Schleifen« als while-Schleifen um.
12 Schreiben Sie das Beispiel mit der break-Anweisung mit Label aus Abschnitt 2.11 »break und continue« mit zwei verschachtelten for-Schleifen um.
13 Schreiben Sie das Beispiel mit der break-Anweisung mit Label aus Abschnitt 2.11 »break und continue« ohne break um. Verwenden Sie eine boolesche Variable, um das Beenden der verschachtelten Schleifen zu steuern.
14 Schreiben Sie das Beispiel mit der continue-Anweisung aus Abschnitt 2.11 »break und continue« ohne break um.
15 Schreiben Sie Code, um die erste Position zu finden, an der ein Array b als Teilfolge in einem Array a vorkommt. Schreiben Sie dazu zwei verschachtelte Schleifen:let result = undefinedfor (let i = 0; i < a.length - b.length; i++) {for (let j = 0; j < b.length; j++) {if (a[i + j] != b[j]) ...}...}Vervollständigen Sie den Code mit break- und continue-Anweisungen mit Label. Schreiben Sie ihn dann ohne break und continue um.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек,