> -- Илья Ермаков писал(а):
> Со случаем алгоритмических ошибок, видимо, всё ясно... Либо программа работает, либо нет. Должны быть барьеры ошибок на неких уровнях рантайма, которые отвечают за обработку таких отказов и восстановление. Но это вообще внеязыковой вопрос....Однако естественно ждать перехода к нормальной ситуации, когда "каждый объект сможет поиграть собственным мячом" (С) "Хоттабыч". Собственно, это уже и наблюдается. Параллельное ООП на сообщениях, в котором вместо глубоких вызовов будет активация параллельного исполнителя. Собственно, у швейцарцев в Композите технически такая возможность уже обеспечена - когда вместо вызова процедуры в большинстве случаев идёт активация исполнителя (до миллионов...). До этого таким мог похвастаться Эрланг, но там таки не предлагалось такого упора на замену вспомогательных алгоритмов на параллельных исполнителей.Так вот, если уж обсуждать проблему обработки особых ситуаций - то имеет смысл уже держать в уме такую перспективу. Как будем делать там, а?  В Эрланге вот принцип простой - ошибка в процессе = "моментом в море"  HALT, но, естественно, без раскрутки стека, на котором просто раскручивать нечего и не к кому...
Мне кажется, вы незаслуженно забываете A2/AOS/Bluebottle, на базе которого разрабатывалась COMPOSITA. До миллионов активных объектов, крутящихся на железе в едином адресном пространстве. В случае ошибки там предусмотрено 2 варианта:

1. обычное объявление тела
## Код:
```
ObjectName = OBJECT
...
BEGIN {ACTIVE}
...
END ObjectName;
```

при возникновении исключительной ситуации объект будет прибит средой.

2. "безопасное" объявление типа
## Код:
```
ObjectName = OBJECT
...
BEGIN {ACTIVE, SAFE}
...
END ObjectName;
```

при возникновении исключительной ситуации объект будет ПЕРЕЗАПУЩЕН с начала, при этом по состоянию локальных переменных объекта, он сможет узнать что с ним случилось.