Только что заметил интересный момент в этом Докторе.Статья Добба (хотя и довольно старая):
... помните, что вы не можете вернуть значение в обработчике функции try-block.Поэтому нет смысла использовать функциональный блок try для непустой функции
, и это пример их кода:
int f()
try
{
...
}
catch(Error &e)
{
// oops, can't return int from here!
}
Что фактически означает, что функциональные блоки попытки слабее , чем "обычные" блоки try, и их использование не рекомендуется, кроме как в конструкторах.
(статья за 2000 год, поэтому было бы неплохо, если бы кто-то прокомментировал, является ли этовсе еще так в текущем стандарте)