Özel durum yakalama-atımlarını kullanarak başvurumda hata ayıklamaya çalışıyorum. Benim istisna işleme kodum hata ayıkladığım bazı bloklardan daha uzun ve hepsi kopyalanmış.İstisna kodu DRY nasıl yapılır?
Aşağıdaki kodu tekrar tekrar ifade etmenin daha iyi bir yolu var mı? Makroların buraya gitmesinin bir yolu olduğundan şüpheleniyorum ama genelde veba gibi makrolardan kaçınıyorum.
try {
// Code here...
}
catch (std::exception & e)
{
ErrorMsgLog::Log("Error", "std exception caught in " __func__ " " __FILE__ " " __LINE__, e.what());
throw e;
}
catch (Exception & e)
{
ErrorMsgLog::Log("Error", "Builder exception caught in " __func__ " " __FILE__ " " __LINE__, e.Message);
throw e;
}
catch (...)
{
ErrorMsgLog::Log("Error", "Unknown exception caught in " __func__ " " __FILE__ " " __LINE__);
throw std::runtime_error ("Unknown Exception in " __func__ " " __FILE__ " " __LINE__);
}
'templated işleve tüm istisnalar forward': Burada uygulamak nasıl olduğunu? – user2485710
Herhangi bir akıl istisna türü olduğu gibi 'stception :: istisna 'bir alt türü olan' stception' istisnasıdır. – rightfold
1. Bu C++ 11 değil. İletilemez. 2. Özel durum Borland C++ Builder sınıfıdır. Ayrıca, ben * sadece * std :: istisnası ele alınmış olsa bile, hala kopya-yapıştırmaktan kurtulmak istiyorum. – QuestionC