Diferença entre a sintaxe try-catch para a função

Deparei-me com esta sintaxe recentemente paratry-catch para a função.

struct A
{
  int a;

  A (int i) : a(i)  // normal syntax
  {
    try {}
    catch(...) {}
  }

  A ()   // something different
  try : a(0) {}
  catch(...) {}

  void foo ()  // normal function
  try {}
  catch(...) {}
};

Ambossyntax são válidos. Existe alguma diferença técnica entre essas sintaxas além do estilo de codificação? Uma das sintaxes é superior à outra em qualquer aspecto?

questionAnswers(4)

yourAnswerToTheQuestion