Exception-Hierarchie unter Java

Java nutzt, wie viele andere Sprachen, Exceptions zur Fehlersignalisierung und Fehlerbehandlung. Folgender Code würde hierbei dem Anschein nach alle Exceptions fangen:

try {
  // Do something wrong
} catch(Exception e) {
  // Gotta Catch 'Em All
}

An dieser Stelle trügt der Schein nicht. Allerdings werden nur einige Fehlerklassen gefangen, nämlich nur solche vom Typ Exception. Die Hierarchie der Fehlerklassen ist unter Java ein wenig differenzierter. In Java erbt jede Klasse implizit von der Klasse Object und so erbt auch die Klasse Throwable von dieser und implementiert das Interface Serializable.

Die Hierarchie der Klassen, welche für Fehlersignalisierung zuständig sind

Von der Klasse Throwable wiederum erben die Klassen Error und Exception. Fehler vom Typ Error stellen laut Definition immer Fehler innerhalb der JVM da, während Exceptions gewöhnliche Fehler des Programmes bzw. des Entwicklers sind. Sollen nun alle Fehlerklassen gefangen werden, so müsste der Quellcode wie folgt aussehen:

try {
  // Do something wrong
} catch(Throwable t) {
  // Gotta Catch 'Em All
}

Das Beispiel sollte nur als solches betrachtet werden, da es sich immer empfiehlt spezielle Fehler zu fangen und zu behandeln. Ein solch allgemeiner Fehlerhandler eignet sich nur für Spezialfälle wie z.B. das Logging nicht behandelter Fehler. Die Hierarchie verästelt sich anschließend noch weiter, so erben unterschiedlichste Klassen von der Klasse Error. Bei der Klasse Exception sieht dies ähnlich aus, allerdings existiert hier eine Besonderheit, die Klasse RuntimeException. Normalerweise muss eine Methode Exceptions, die sie wirft im Methodenkopf bekannt geben, wenn sie nicht in der Methode behandelt werden:

public static void example() throws Exception {
  throw new Exception();
}

Bei Klassen die von der Klasse RuntimeException erben muss diese Bekanntmachung im Methodenkopf nicht erfolgen. Sie werden trotzdem nach oben durchgereicht bis sie gefangen werden oder sich das Programm beendet, wenn die Behandlung der Exception nicht durchgeführt wurde.

Bomberman im Browser

Bomberman, welches 1983 das erste Mal unter der Ägide von Hudson Soft erschien, ist ein süchtig machendes Spiel. Wer dieser Sucht nachgeben möchte und eine Runde dieses Spielprinzips genießen möchte, der sollte Game of Bombs ausprobieren.

Game of Bombs

Dabei handelt es sich um eine Umsetzung des Spielprinzips für den Browser. Während im normalen Bomberman zu viert oder acht gespielt werden kann, ermöglicht Game of Bombs wesentlich mehr Mitspieler, welche zusammen über das Netz auf der gleichen Karte spielen. Das Spiel kann nach einer Anmeldung kostenlos gespielt werden, allerdings ist es möglich sich Plutonium zu kaufen um gewisse Vorteile zu genießen. Zu finden ist das Spiel unter gameofbombs.com.

Hello, World!

Wer mit einer neuen Programmiersprache anfängt, der schreibt in den meisten Fällen ein sogenanntes Hello, World!-Programm. Ziel eines solchen Programmes ist es einfach folgende Zeile auszugeben:

Hello, World!

Nun sehen diese Programme in den gebräuchlichen Sprachen meist recht ähnlich aus, aber es geht durchaus auch anders, wie die The Hello World Collection zeigt.

helloworldcollection.de

Begonnen wurde diese Kollektion 1994 und ist mittlerweile wahrscheinlich das Verzeichnis mit den meisten Hello, World!-Programmen auf der Welt. Im Moment umfasst die Kollektion 592 dieser Programme in unterschiedlichen Sprachen. Zu finden ist die Seite unter helloworldcollection.de.

Partitionierung auf dem Terminal unter macOS

Für macOS war ich auf der Suche nach einem Tool für die Partitionierung von Datenträgern, welches sich für die Nutzung im Terminal eignete. Am liebsten wäre mir eine Variante von cfdisk gewesen, welches durch die einfache Bedienung glänzt. fdisk auf dem Terminal ist in vielen Fällen doch etwas zu spartanisch. Fündig geworden bin ich schlussendlich bei gptfdisk, welches über den Paketmanager Homebrew installiert werden kann:

brew install gptfdisk

Mit diesem Paket werden drei Anwendungen installiert: gdisk, sgdisk und cgdisk. Während die ersten beiden Anwendungen reine Kommandozeilentools sind, verfügt cgdisk über eine interaktive Oberfläche.

cgdisk ist ein Clone von cfdisk

Nach dem Aufruf der Anwendung mit dem passenden Laufwerk:

sudo cgdisk /dev/disk4

können die entsprechenden Operationen und Aktion über das Menü vorgenommen werden. Nach dem Abschluss der Operationen kann der Nutzer die Änderungen über das Write-Kommando auf die Festplatte schreiben und anschließend das Programm beenden.