Ano, umí. Sice netuším, jak vypadají výjimky v Prologu :-), ale Ada má více méně standardní model výjimek, podobný tomu z C++. Ovšem s tím rozdílem, že výjimka je v Adě samostatný typ. Neošetřenou výjimku odchytí runtime a vypíše jméno souboru a číslo řádky, kde byla vyvolána. To není u jazyků kompilovaných do nativního kódu právě samozřejmost.
Samotná Ada výjimky používá. Třeba dělení nulou vyvolá standardní výjimku, kterou lze ošetřit. Používají se i v souvislosti s tasky. Při pokusu o rande s taskem, který byl ukončen se vyvolá Tasking_Error atd.