Как получить рубин для вывода исключения внутри потока? - PullRequest
7 голосов
/ 02 августа 2010

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

Ответы [ 2 ]

3 голосов
/ 03 августа 2010

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

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

3 голосов
/ 02 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...