• Lua Столкнулся с одним недостатоком lua, как встраиваемого скриптового языка в приложение на C++. Часто в lua передаются разные C++ функции. К сожалению, информация о типах исключений, которые генерируются в этих функциях, полностью теряется, и код, вызвавший lua-функцию, получает только состояние ошибки без каких либо подробностей.

Replies (6)

  • @bunkar, по правилам хорошего тона считается что все библиотеки не должны бросать исключений
  • @Bogolt, Не знаю, кем это считается. Холивар не будем разводить, но исключения — это инструмент передачи информации об исключительной ситуации (ошибке). Вполне нормально им пользоваться. Если уж на то пошло, было бы хорошим тоном писать спецификацию исключений. Мол, библиотека гарантирует, какие исключения быть могут, или что их не будет вообще :)
  • @bunkar, хм, ну возьми почти любую крупную библиотеку — там или исключения не кидаются, или есть возможность избежать их ( в том-же stl можно указать стримам не кидать исключений к примеру, в boost-filesystem есть параметры которые предотвращают исключения ). Идея тут — кому надо пользуйся, кому не надо — избегай.
    По собственному опыту помню когда исключения работали в узком месте программы слишком долго, из-за чего пришлось их убирать.
    Спецификации исключений обычно приносят головную боль — потому что отслеживать их жутко геморно. Про холиворы — да фича очень холиворная. Вроде и удобно и проблемы решает, но и просит их тоже. По библиотекам — если они целиком твои — то конечно никто тебе слова не скажет, но если ими пользуются другие люди — это обычно приносит лишние проблемы.
  • @Bogolt, Всё так, и вот я хочу увидеть своё честное исключение, прошедшее сквозь движок lua... и не могу этого сделать ни при каких параметрах lua.
  • @bunkar, Чем в lua занимаешся?
  • @divetoh, Используем в некоторых местах в качестве встраиваемого скриптового языка, чтобы какой-нибудь кусок бизнес-логики описать.