Prima di PHP 7.1, quando vi era la necessità di gestire due diversi tipi di eccezioni nello stesso modo era necessario non di rado duplicare le istruzioni per il catching si aveva quindi l'esigenza di ricorrere ad espressioni strutturate in questo modo:

try {
   // espressione...
} catch (ExceptionType1 $e) {
   // gestione del primo tipo di eccezione
} catch (ExceptionType2 $e) {
   // gestione del secondo tipo di eccezione
} catch (Exception $e) {
   // ulteriore codice per la gestione delle eccezioni
} 

Inizialmente si era pensato di ovviare a questo problema implementando un'interfaccia comune per ExceptionType1 e ExceptionType2 in modo che potesse essere sottoposta a catching con un singolo passaggio; tale soluzione si è però rivelata insufficiente perché presupponeva che lo sviluppatore avesse la possibilità di controllare pienamente la gerarchia delle eccezioni così come viene riportata nel sorgente.

In questo modo infatti ci si sarebbe trovati di fronte a diverse casistiche caratterizzate da un elevato grado di imprevedibilità, come nel caso di progetti collaborativi. Si è quindi deciso di supportare il catching per i tipi multipli di eccezioni ricorrendo alla seguente sintassi:

try {
   // espressione...
} catch (ExceptionType1 | ExceptionType2 $e) {
   // gestione eccezioni
} catch (\Exception $e) {
   // ...
}

E facile notare come i principi che regolavano già in precedenza la gestione delle eccezioni non vengono stravolti con l'introduzione di questa nuova funzionalità, essi in realtà non sono cambiati perché si è preferito migliorare gli strumenti preesistenti ricorrendo ad un potenziamento della sintassi.

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *