La gestione degli errori di un'API è esattamente la stessa della gestione degli errori di qualsiasi applicazione web. Le eccezioni devono essere registrate su un server syslog centrale e il registro centrale dovrebbe essere revisionato regolarmente. Se usi un framework, il framework dovrebbe gestirlo per te.
L'invio di e-mail tramite PHP ogni volta che si verifica un'eccezione è un percorso rischioso. Cosa succede se si verificano eccezioni all'interno del mittente stesso? Cosa succede se il server SMTP non funziona e non si ricevono e-mail per settimane? Cosa succede se un hacker genera intenzionalmente migliaia di eccezioni al secondo?
Il codice di risposta nel caso di un'eccezione dovrebbe essere l'errore del server interno HTTP 500. Non ci si aspetta che tu inventi i tuoi codici di risposta, poiché il punto dell'API è di utilizzare un'interfaccia standard che qualsiasi sviluppatore può comprendere. Se usi un framework, il framework dovrebbe gestirlo per te.
Non affermare mai di aver provato la tua app così bene che non ci sono bug. Verranno trovati bug e la reputazione della tua azienda ne risentirà.
L'applicazione del client dovrebbe reagire a HTTP 500 dipende dall'applicazione. Può informare l'utente che qualcosa è andato storto. Oppure puoi riprovare. Oppure invia una richiesta AJAX contenente l'errore e la traccia dello stack. Evita i popup, poiché sono fastidiosi e verranno eliminati la maggior parte del tempo. Non chiedere all'utente di contattarti: è già infastidito dal fatto che la tua applicazione non funzioni, quindi non sei nella posizione di chiedere nulla all'utente. D'altra parte, chiedere scusa e fornire un indirizzo per il supporto è bello.