кажется, дошло 
Это значит, что на каждый тип свой колбэк? И его передавать в обёртку с try catch как параметр?
Да, на каждый способ создания. Если какие-то типы создаются похожим способом, то можно создать одну функцию.
Еще вместо колбеков можно ООП использовать. В паттернах это называют фабриками (factory).
Ну так бы сразу и сказали
Я-то думал, что вы про универсальный метод говорите. Вот я и туплю, какой ещё там колбэк и зачем.