Сообщение Re[3]: Почему в расте отсутствует выброс исключений? от 30.11.2022 9:51
Изменено 30.11.2022 9:52 vsb
Re[3]: Почему в расте отсутствует выброс исключений?
Здравствуйте, johny5, Вы писали:
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
При компиляции можно ставить опцию, когда паника сразу грохает приложение. Поэтому для библиотек панику вместо возврата ошибок делать нельзя.
Для своих приложений в теории — можно. Это действительно очень похоже на исключения. Но это будет как с go, вся стандартная библиотека и все сторонние библиотеки используют другой механизм обработки ошибок, поэтому тут или всё переписывать/оборачивать, или будет в проекте две системы обработки ошибок.
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
При компиляции можно ставить опцию, когда паника сразу грохает приложение. Поэтому для библиотек панику вместо возврата ошибок делать нельзя.
Для своих приложений в теории — можно. Это действительно очень похоже на исключения. Но это будет как с go, вся стандартная библиотека и все сторонние библиотеки используют другой механизм обработки ошибок, поэтому тут или всё переписывать/оборачивать, или будет в проекте две системы обработки ошибок.
Re[3]: Почему в расте отсутствует выброс исключений?
Здравствуйте, johny5, Вы писали:
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
При компиляции можно ставить опцию, когда паника сразу грохает приложение. Поэтому для библиотек панику вместо возврата ошибок делать нельзя.
Для своих приложений в теории — можно. Это действительно очень похоже на исключения. Но это будет как с go, вся стандартная библиотека и все сторонние библиотеки используют другой механизм обработки ошибок, поэтому тут или всё переписывать/оборачивать, или будет в проекте две системы обработки ошибок.
В целом лучше писать код так, как пишут другие.
J>Кстате обнаружил для себя panic!, оказывается он не убивает приложение а только текущий поток (ну и приложение если поток был главным). Tokio как то хитро это использует и просто выплёвывает запаниковавшие короутины, продолжая работать дальше. Чем то похоже на эксепшионы.
J>На обработчик panic можно ставить свою процедуру через set_hook. Правда, насколько я понял, это глобальный обработчик и он не может остановить убивание провинившегося потока.
J>Просветите если чего недопонял, плиз.
При компиляции можно ставить опцию, когда паника сразу грохает приложение. Поэтому для библиотек панику вместо возврата ошибок делать нельзя.
Для своих приложений в теории — можно. Это действительно очень похоже на исключения. Но это будет как с go, вся стандартная библиотека и все сторонние библиотеки используют другой механизм обработки ошибок, поэтому тут или всё переписывать/оборачивать, или будет в проекте две системы обработки ошибок.
В целом лучше писать код так, как пишут другие.