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.