История изменений
Исправление KivApple, (текущая версия) :
А раскручивать стек бесполезно. Потому что часть объектов могут быть в состоянии нарушающим инвариант. И их деструкторы к этому не будут готовы.
Программист обычно более-менее знает какие строчки кода могут выбросить эксепшн и предпринимать меры, чтобы в эти моменты все объекты были в адекватном состоянии. А такое что вообще ЛЮБАЯ строчка может быть прервана, к этому никто не может быть готов (если не полагаться на полное освобождение памяти процесса уже со стороны ОС, при этом сама ОС не даёт жёстко завершать свои системные вызовы, например, потому что глобальное состояние ядра делится между всеми процессами).
Даже всякие джавы могут только память за тобой подчистить, но привести к инварианту общие структуры разделяемые mutex-ом уже нет, поэтому InterruptedException прерывает только строго ограниченный набор библиотечных функций (и ты должен это как-то обработать, если надо), а в произвольном месте тред прервать нельзя даже в управляемом языке.
Исправление KivApple, :
А раскручивать стек бесполезно. Потому что часть объектов могут быть в состоянии нарушающим инвариант. И их деструкторы к этому не будут готовы.
Программист обычно более-менее знает какие строчки кода могут выбросить эксепшн и предпринимать меры, чтобы в эти моменты все объекты были в адекватном состоянии. А такое что вообще ЛЮБАЯ строчка может быть прервана, к этому никто не может быть готов (если не полагаться на полное освобождение памяти процесса уже со стороны ОС, при этом сама ОС не даёт жёстко завершать свои системные вызовы, например).
Даже всякие джавы могут только память за тобой подчистить, но привести к инварианту общие структуры разделяемые mutex-ом уже нет, поэтому InterruptedException прерывает только строго ограниченный набор библиотечных функций (и ты должен это как-то обработать, если надо), а в произвольном месте тред прервать нельзя даже в управляемом языке.
Исходная версия KivApple, :
А раскручивать стек бесполезно. Потому что часть объектов могут быть в состоянии нарушающим инвариант. И их деструкторы к этому не будут готовы.
Программист обычно более-менее знает какие строчки кода могут выбросить эксепшн и предпринимать меры, чтобы в эти моменты все объекты были в адекватном состоянии. А такое что вообще ЛЮБАЯ строчка может быть прервана, к этому никто не может быть готов (если не полагаться на полное освобождение памяти процесса уже со стороны ОС, при этом сама ОС не даёт жёстко завершать свои системные вызовы, например).
Даже всякие джавы могут только память за тобой подчистить, но привести к инварианту общие структуры разделяемые mutex-ом уже нет, поэтому InterruptedException прерывает только строго ограниченный набор библиотечных функций (и ты должен это как-то обработать, если надо), а в произвольном месте тред прервать нельзя.