Az Io programozási nyelv

Kivételkezelés

Kivétel kiváltása

Kivéltelek kiváltásához a raise() metódus használható az Exception prototípuson vagy bármelyik leszármazott objektumán.

exceptionProto raise(<név>, <leírás>)

Három eloredefiniált gyereke van az Exception prototípusnak: Error, Warning és Notification. Például:

Exception raise("foo", "generic foo exception") Error raise("Simulation", "Not enough memory") Warning raise("Defaults", "No defaults found, creating them")

Kivétel kezelése

Egy kivétel elkapásához az Object prototípusbeli try() metódus használható. A try() el fogja kapni bármelyik kivételt, ami elofordul benne. Ha egyet elkapott, a "try" visszatér vele, egyébként Nop-pal (egy objektum, ami önmagával tér vissza minden üzenetre) tér vissza:

try(<üzenet>)

Egy kivétel lekezeléséhez az Exception catch() metódusa használható. Például:

try(
// code
) catch(Exception, e,
write("caught ", e name, ":", e description, "\n")
)

A catch() elso argumentuma adja meg milyen típusú kivételt kezel le, a második megad egy lokális változót, ami értékül kapja a kivételt.

A catch()-ek azzal kivétellel térnek vissza, amin meghívták oket, ezért láncba fuzhetok:

try(
// code
) catch(Warning, e,
// code
) catch(Error, e,
// code
)

Kivétel továbbadása

Egy kivétel továbbdobásához a pass() metódus használható.

try(
// code
) catch(Error, e,
// code
) pass

Saját kivétel definiálása

Saját kivételtípus implementálásához egyszeruen klónozni kell az Exception-t:

MyErrorType := Error clone