Kivételes helyzetet általában külsõ hardver megszakítás vagy futási hiba idézhet elõ, de egy megszakító utasítással is kiváltható. Mivel a megszakítások a megfelelõ handler törzsének végrehajtását eredményezik, ezért a handlereket használhatjuk kivételkezelésre.
A kivételkezelés történhet a task szintjén. Egy ilyen kivételkezelõ mechanizmus alapvetõen esemény(eke)t vagy a taskban elõidézett hibá(ka)t kezeli le.
A kivételkezelés történhet még a rendszer szintjén. Ekkor a kivétel (mint pl. egy észlelt hiba esetén elküldött aszinkron megszakítás) a rendszer egy másik taskjától ered.
A Synapse egy magas szintû nyelv eszközeivel, egységesen támogatja a kivételkezelést, akár hardver, akár szoftver eredetû.
A következõ program a nullával való osztáskor fellépõ futási hiba kezelését mutatja be:
# div0.int
task DivisionByZero in "div0.syn"
# div0.syn
handler DivByZero hardware:0
enable hardware # allow further interrupts
put "Division by zero\n"
interrupt DivisionByZero.Exception
handler Exception
# action after a division by zero ...
entry
# on entry, the interrupt hardware vector 0 is installed
loop
enable wait Exception
Valós idejû mûködés során szükség lehet arra, hogy a rendszer bizonyos esetekben megfelelõen rövid idõn belül reagálhasson különbözõ eseményekre. A Synapse két esetben biztosít lehetõséget a szükséges idõkorlátok biztosítására. Egy task várakoztatásakor és egy ciklus végrehajtásakor.
# One of these software handlers Current and Last must be
# interrupted within the next 20s (2000 * 10 ms/real-time unit)
enable wait Current, Last within 2000
# Exit from the loop must be within the next 10s
# (1000 * 10 ms/real-time unit)
var aByte:byte
loop within 1000
get aByte
exit when aByte = 0
put aByte
Ha a megadott idõkorlátot túllépi a rendszer, futási hiba keletkezik.