Size: a a a

2020 May 29

AS

Alexey Solomin in pro.cxx
Dollar Føølish
Просто у меня возник вопрос из-за слов саттера 99 года
а это сейчас всё ещё актуально? что-то мне кажется что разговор там был ещё не про C++98/03 даже ;)
источник

v

vehlwn in pro.cxx
A function-try-block associates a sequence of catch clauses with the entire function body, and with the member initializer list.

Кто сказал что функциональный трай содержит имплисит throw последним стейтментом?
источник

v

vehlwn in pro.cxx
Dollar Føølish
Щас пойду смотреть код бензопилы
Что там смотреть? Если есть один большой трай-катч в функции, то сразу делаю его функциональным траем. Это было в калькуляторе Старуса
int main()
try
{
   while (cin) {
       Token t = ts.get();.....
источник

DF

Dollar Føølish in pro.cxx
function try block is to translate an exception thrown from a base or member subobject. That's Moral #1. Moral #2 says that destructor function try blocks are entirely usele—

“—But wait!” I hear someone interrupting from the middle of the room. “I don't agree with Moral #1. I can think of another possible use for constructor function try blocks—to free resources allocated in the initializer list or in the constructor body!”

Sorry, no. Remember that once you get into your constructor try block's handler, any local variables in the constructor body are also already out of scope, and you are guaranteed that no base subobjects or member objects exist anymore, period. You can't even refer to their names. Either the parts of your object were never constructed, or those that were constructed have already been destroyed. So you can't be cleaning up anything that relies on referring to a base or member of the class (and anyway, that's what the base and member destructors are for, right?).
источник

DF

Dollar Føølish in pro.cxx
Книжка more exceptional c++
источник

DF

Dollar Føølish in pro.cxx
Вот он говорит что function try syntax нужен только штоб транслировать эксепшн
источник

v

vehlwn in pro.cxx
Dollar Føølish
Вот он говорит что function try syntax нужен только штоб транслировать эксепшн
Куда транслировать? На украинский язык?
источник

D

Dmitriy in pro.cxx
Насколько помню, не только "транслировать", а, например, бросить исключение другого типа
источник

DF

Dollar Føølish in pro.cxx
Нет поймать один и бросить другой
источник

DF

Dollar Føølish in pro.cxx
Ну да
источник

DF

Dollar Føølish in pro.cxx
В общем я пока согласен с саттером
источник

DF

Dollar Føølish in pro.cxx
Просто в инете по function try syntax в основном гуглятся антипаттерны типа того что я привел в начале
источник

v

vehlwn in pro.cxx
Dollar Føølish
Просто в инете по function try syntax в основном гуглятся антипаттерны типа того что я привел в начале
Ты привел неправильный try-finally, причем без catch.
источник

DF

Dollar Føølish in pro.cxx
Хорошо, покажи пожалуйста пример условного полезного constructor try syntax
источник

DF

Dollar Føølish in pro.cxx
В общем Дмитрий правильно ответил на мой вопрос, проблема решена
источник

v

vehlwn in pro.cxx
Dollar Føølish
Хорошо, покажи пожалуйста пример условного полезного constructor try syntax
На цппрефе же написано: чтоб ловить исключения из конструкторов мем инит листа.
источник

v

vehlwn in pro.cxx
Dollar Føølish
Нет поймать один и бросить другой
Ловить одно исключение, чтоб бросить другое, э
источник

v

vehlwn in pro.cxx
то джавастайл.
источник

DF

Dollar Føølish in pro.cxx
Ну посмотри на цитату саттера
источник

DF

Dollar Føølish in pro.cxx
Она разумна
источник