Будет ли он доступен после улова?
Нет.Он будет уничтожен в конце блока, в котором он объявлен, как и любая другая локальная переменная.
try {
dbhandler<recType> dbh(("dbName"),("table"));
} // dbh.~dbhandler<recType>() is called to destroy dbh
Какая лучшая альтернатива для дизайна?
Объявите dbh
за пределами блока try
или переместите весь код, который его использует, в блок try
.Какой из них наиболее целесообразен, зависит от вашего конкретного варианта использования.
На несколько связанном примечании, если вы catch (...)
, вам следует либо выбросить исключение, либо закрыть приложение: вы не представляете, что это за исключение.обрабатываются, и в целом вы не знаете, безопасно ли продолжать выполнение.