Yes, you should awlays wrap a DB::transaction in try..catch if you want to catch the exception.
DB::transaction
try..catch
DB::transaction will only handle database rollback, but it will not do any exception handling.