Dipende un po' da che codice usi per gestire il database, mysqli o pdo?
E' possibile che il codice dentro al catch non generi una exception e che quindi tu non riesca a prenderla nel blocco catch.
Per esempio pdo di default non genere exception sugli errori, bisogna prima configurarlo in modo che lo faccia.

Puoi postarci tutto il codice così magari riusciamo a darti informazioni più precise?