Aufgabe: Email-Adressen und Exceptions

Entwerfen Sie eine Klasse EmailAddress, die valide E-Mail-Adressen verwalten kann.

Eine E-Mail-Adresse erfüllt unter anderem folgende Randbedingungen1:

  • Sie enthält genau ein @-Zeichen, welches den Lokalteil und den Domänenteil voneinander trennt (Lokalteil@Domänenteil).
  • Lokalteil und Globalteil dürfen in unserem Fall nur folgende Zeichen enthalten: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.!#$%&'*+-/=?^_`{|}~
  • Lokalteil und Globalteil dürfen jeweils nicht mit einem Punkt beginnen oder enden.

Gehen Sie wie folgt vor:

  1. Die Klasse EmailAddress soll einen Konstruktor besitzen, der die Adresse als Zeichenkette übergeben bekommt. Diese ist dann nicht mehr veränderlich. Implementieren Sie den Konstruktor. Die Bestandteile sollen über die Methoden

    • String toString() (Rückgabe z.B. "test@mail.example.com")
    • String getLocalPart() (Rückgabe z.B. "test")
    • String getDomainPart() (Rückgabe z.B. "mail.example.com")
    • String[] getDomainParts() (Rückgabe z.B. { "mail", "example", "com" })

    auslesbar sein.

  2. Erstellen Sie eine eigene Exception-Klasse EmailAddressFormatException, welche durch den Konstruktor ausgelöst werden kann, wenn die oben genannten Bedingungen für eine gültige Adresse nicht erfüllt sind.

  3. Testen Sie die Klasse EmailAddress und den Ausnahmemechanismus indem Sie eine Test-Klasse EmailAddressTest erstellen. Darin erstellen Sie zunächst ein paar valide Adressen mit anschließender Ausgabe Erlaubte Adresse. Dann aber auch mehrere ungültige Adressen, deren Exceptions Sie abfangen sollten und in diesem Fall Nicht erlaubte Adresse ausgeben.


  1. Tatsächlich gibt es noch einige weitere Regeln: https://en.wikipedia.org/wiki/Email_address#Syntax. Mittlerweile setzt sich aber die Einsicht durch, dass nur das testweise Senden einer Email eine sichere Aussage erlaubt: https://hackernoon.com/the-100-correct-way-to-validate-email-addresses-7c4818f24643#.3hmjudhxp