Kurz erklärt
Ein Mechanismus, mit dem ein Programm auf unerwartete Fehler zur Laufzeit reagieren kann, ohne sofort komplett abzustürzen — ein Fehler wird "geworfen" und kann an anderer Stelle im Code gezielt "gefangen" und behandelt werden.
Genauer
Statt Rückgabewerte manuell auf Fehlercodes zu prüfen, unterbricht eine Exception den normalen Programmfluss und springt zum nächsten passenden Fehlerbehandlungsblock (try/catch). Das trennt den "Glücksfall"-Code vom Fehlerbehandlungscode und verhindert, dass ein übersehener Fehler unbemerkt weiterläuft. Bei mehreren möglichen Fehlerarten lassen sich unterschiedliche Behandlungsblöcke definieren.