2015-04-10 13 views

Odpowiedz

2

Co szukasz będzie prawdopodobnie coś takiego:

try { 
    // ... 
} 
template <typename Exc> 
catch (Exc const& ex) { 
    throw Exc(std::string("Custom message:") + ex.what()); 
} 

Przynajmniej tak jak chcemy zrobić coś takiego w C++ zwykle. Niestety, nie możesz napisać kodu szablonu w takim bloku catch. Najlepsze, co możesz zrobić, to po prostu dodać informacje o typie środowiska wykonawczego jako ciąg:

try { 
    // ... 
} 
catch (std::exception const& ex) { 
    throw std::runtime_error(std::string("Custom message from ") + 
          typeid(ex).name() + ": " + ex.what()); 
} 
Powiązane problemy