Nil A
2021-10-29 03:32:22 UTC
Hello, All!
Тут вот вспомнил, что меня очень раздражает, когда в коде библиотеки я вижу
abort() когда аффтар не знает что дальше делать. Ну ладно ещё там память
кончилась, и действительно, дальше ехать уже не получиться, хотя в линуксах,
например, аллокация памяти реально только виртуальные странички выделает, и на
64битной платформе оно кончится практически не может, т.е. когда память реально
кончится, то ядро либо пристрелит OOM-Killer'ом, или какой-нибудь SIGBUS
словит, потому что физические странички кончатся.
Про abort() в библиотеках. Есть такие аффторы, у них там файл не открылся/не
зависался, а они сразу в abort(), или какая-то проблема с сокетом если. Блин,
выдай на верх ошибку, разберётся программа что делать с кривым файлом или
сокетом, перепопробует по-другому, или как-то юзеру аккуратно сообщит, но не
выпадать же прям тут на месте.
Так вот, пейшу я ту на Go. А в Go, как вы знаете, нету исключений. Так бы
аффтар библиотечки кинул нам внутри исключение, а ты потом лови его в своём
коде, или не лови и получай abort() ;-) Но аффтарам библиотек на Go бывает
сильно ломово сильно изнутри протаскивать ошибку, чтобы её потом наружу
передать, проще же panic(err) сделать и иди читай стек.
Ну так-то я на гоу пейшу там утилитки, и бывает удобно готовую библиотеку с
гитхаба импортировать, опять же, привет плюсям, где чужую библиотеку к себе
притащить это не всегда просто. И вот аффтар библиотечки сшоткатил и panic
кинул. Ладно у меня утилитка, и я бы и сам бы ничего умнее не придумал, чем
выйти, но а если я сервер мать его пишу высоконагруженный, как во всех этих гоу
рекламмах, какой он классный...
Best Regards, Nil
Тут вот вспомнил, что меня очень раздражает, когда в коде библиотеки я вижу
abort() когда аффтар не знает что дальше делать. Ну ладно ещё там память
кончилась, и действительно, дальше ехать уже не получиться, хотя в линуксах,
например, аллокация памяти реально только виртуальные странички выделает, и на
64битной платформе оно кончится практически не может, т.е. когда память реально
кончится, то ядро либо пристрелит OOM-Killer'ом, или какой-нибудь SIGBUS
словит, потому что физические странички кончатся.
Про abort() в библиотеках. Есть такие аффторы, у них там файл не открылся/не
зависался, а они сразу в abort(), или какая-то проблема с сокетом если. Блин,
выдай на верх ошибку, разберётся программа что делать с кривым файлом или
сокетом, перепопробует по-другому, или как-то юзеру аккуратно сообщит, но не
выпадать же прям тут на месте.
Так вот, пейшу я ту на Go. А в Go, как вы знаете, нету исключений. Так бы
аффтар библиотечки кинул нам внутри исключение, а ты потом лови его в своём
коде, или не лови и получай abort() ;-) Но аффтарам библиотек на Go бывает
сильно ломово сильно изнутри протаскивать ошибку, чтобы её потом наружу
передать, проще же panic(err) сделать и иди читай стек.
Ну так-то я на гоу пейшу там утилитки, и бывает удобно готовую библиотеку с
гитхаба импортировать, опять же, привет плюсям, где чужую библиотеку к себе
притащить это не всегда просто. И вот аффтар библиотечки сшоткатил и panic
кинул. Ладно у меня утилитка, и я бы и сам бы ничего умнее не придумал, чем
выйти, но а если я сервер мать его пишу высоконагруженный, как во всех этих гоу
рекламмах, какой он классный...
Best Regards, Nil