Как я становлюсь рубиновым для вывода исключения в потоке?

Когда я порождаю поток с Thread.new {}, он похож на любое исключение, которое происходит в том потоке, никогда не выходит в свет, и приложение просто бесшумно игнорирует его

7
задан Tyler Gillies 2 August 2010 в 19:02
поделиться

2 ответа

Обычно потоки изолированы друг от друга, поэтому исключение в одном из них не приведет к завершению работы всего приложения.

Но, хотя я никогда не использовал их, в классе Thread есть несколько методов abort_on_exception, даже с некоторыми примерами. Они должны делать то, что вы хотите.
http://corelib.rubyonrails.org/classes/Thread.html

3
ответ дан 7 December 2019 в 09:55
поделиться

Добавляя к ответу Никиты, вы также можете вызвать исключение, вызвав thread.join на сгенерированном вами потоке.

Если вы запускаете программу с включенным флагом отладки (ruby -d), то вы также прерветесь, когда в потоке возникнет необработанное исключение.

3
ответ дан 7 December 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: