Potřebujeme-li vyvolat v programu vlastní výjimku, je třeba nejprve vytvořit vhodnou třídu, odvozenou od třídy Exception nebo některé její podtřídy. Pokud vystačíme s tím, co nám bázová třída nabízí, může nová třída pro výjimku vypadat třeba takto:
class MojeVyjimka extends Exception { MojeVyjimka(String msg) { super(msg); } }
V místě, kde chceme výjimku vyvolat, pak pouze vytvoříme instanci třídy MojeVyjimka a použijeme ji jako argument příkazu throw. Ten zajistí vyvolání výjimky a její případné ošetření.
class Vyjimky { static void zpracuj(int x) throws MojeVyjimka { System.out.println("Volani zpracuj " + x); if( x < 0 ) throw new MojeVyjimka("Parametr nesmi byt zaporny"); } public static void main(String args[]) { try { zpracuj(1); zpracuj(-1); } catch( MojeVyjimka e ) { e.printStackTrace(); } } }
Metoda zpracuj, která vyvolává výjimku MojeVyjimka, musí tuto skutečnost deklarovat ve své hlavičce za klíčovým slovem throws. Nedeklarují se pouze výjimky odvozené od tříd Error a RuntimeException, které mohou potenciálně nastat v každé funkci. Takto je možné již během překladu zkontrolovat, zda jsou všechny nesystémové výjimky správně ošetřeny.