Сообщение Re[3]: Почему в расте отсутствует выброс исключений? от 30.11.2022 9:04
Изменено 30.11.2022 9:09 flаt
Re[3]: Почему в расте отсутствует выброс исключений?
Здравствуйте, johny5, Вы писали:
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
Это они и есть.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
https://doc.rust-lang.org/std/panic/fn.catch_unwind.html — вот официальный способ перехвата паники. По сути, try/catch.
https://doc.rust-lang.org/std/panic/fn.set_hook.html — это не обработка, а просто колбэк при панике, чтобы вывести сообщение.
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
Это они и есть.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
https://doc.rust-lang.org/std/panic/fn.catch_unwind.html — вот официальный способ перехвата паники. По сути, try/catch.
https://doc.rust-lang.org/std/panic/fn.set_hook.html — это не обработка, а просто колбэк при панике, чтобы вывести сообщение.
Re[3]: Почему в расте отсутствует выброс исключений?
Здравствуйте, johny5, Вы писали:
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
Это они и есть.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
https://doc.rust-lang.org/std/panic/fn.catch_unwind.html — вот официальный способ перехвата паники (если не компилировать с panic=abort). По сути, try/catch.
https://doc.rust-lang.org/std/panic/fn.set_hook.html — это не обработка, а просто колбэк при панике, чтобы вывести сообщение.
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
Это они и есть.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
https://doc.rust-lang.org/std/panic/fn.catch_unwind.html — вот официальный способ перехвата паники (если не компилировать с panic=abort). По сути, try/catch.
https://doc.rust-lang.org/std/panic/fn.set_hook.html — это не обработка, а просто колбэк при панике, чтобы вывести сообщение.