logo
Языки программирования

16.6. Исключения

Вычисление выражения в языке ML может привести к исключению. Сущест­вуют стандартные исключения, которые в основном возникают при вычисле­ниях со встроенными типами, например при делении на ноль или попытке взять первый элемент пустого списка. Программист также может объявлять исключения, у которых могут быть необязательные параметры:

exception BadParameter of int;

После этого может возникнуть исключение, которое можно обработать:

fun only_positive n =

if n <= 0 then raise BadParameter n

else...

val i = ...;

val j = only_positive i

handle

BadParameter 0 => 1;

BadParameter n => abs n;

Функция only_positive возбудит исключение BadParameter, если параметр не положителен. При вызове функции обработчик исключения присоединяется к вызывающему выражению, определяя значение, которое будет возвращено, если исключение наступит. Это значение можно использовать для дальнейших вычислений в точке, где произошло исключение; в этом случае оно ис­пользуется только как значение, возвращаемое функцией.

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4