An example for postgres:
1. When pgsql extension is missing, @pg_connect would silently abort execution. Check for pg_connect existence before calling it, same with pg_pconnect.
2. When connection fails, the error reported by php is discarded. User is shown the failure message without the reason for failure, making debugging difficult. Collect the error (if any) via a temporarily installed error handler, and display it if connection failed.
With the exception of mssqlnative, no dbal checks for the presence of its extension's functions before calling them. This manifests in white pages when people, for example, move from one host to another and the available mysql extension changes from mysqli to mysql.