Codice per exception concatenata

di il
2 risposte

Codice per exception concatenata

[CODE] try { //... } catch (\Throwable $throwable) { throw new \Exception( 'blablabla', $XXX, $throwable ); } Al posto di $XXX cosa potrei usare?

0? (valore predefinito)
1? (per indicare che si tratta di una wrapper-exception)
255? (volendo...)
$throwable->getCode()? (equivalente all'exception wrappata)
$throwable->getCode() + 1? (volendo...)

Qual'è l'approccio più corretto?

2 Risposte

  • Re: Codice per exception concatenata

    Quello che chiedi, per come lo chiedi, non ha senso.

    FONDAMENTALMENTE, NON ESISTE UN'UNICO modo per risollevrae un'eccezzione, perche' c'e' della FILOSOFIA che sta' dietro alle scelte che si fanno.

    FILOSOFIA che NON E' una scelta personale, ma BUONE PRATICHE di programmazione.
    E tali BUONE PRATICHE sono mutevoli e dipendono da un sacco di fattori che sono SCONOSCIUTI nel microsocopico pezzetto di codice che hai scritto,

    Ci sono DUE soluzioni semplici, semplici:

    1) risollevare la STESSA eccezzione
    2) sollevare un'altra eccezzione passando la precedente come inner exception ed usando lo stesso messaggio della precedente.

    Per le infinite altre varianti, ti serve piu' esperienza
  • Re: Codice per exception concatenata

    migliorabile ha scritto:


    Quello che chiedi, per come lo chiedi, non ha senso.

    FONDAMENTALMENTE, NON ESISTE UN'UNICO modo per risollevrae un'eccezzione, perche' c'e' della FILOSOFIA che sta' dietro alle scelte che si fanno.

    FILOSOFIA che NON E' una scelta personale, ma BUONE PRATICHE di programmazione.
    E tali BUONE PRATICHE sono mutevoli e dipendono da un sacco di fattori che sono SCONOSCIUTI nel microsocopico pezzetto di codice che hai scritto,

    Ci sono DUE soluzioni semplici, semplici:

    1) risollevare la STESSA eccezzione
    A che servirebbe?
    2) sollevare un'altra eccezzione passando la precedente come inner exception ed usando lo stesso messaggio della precedente.
    E lo stesso code?
    Per le infinite altre varianti, ti serve piu' esperienza
    Un altro esempio
    [CODE] foreach ($loggers as $key => $logger) { try { $logger->log(); } catch (\Throwable $throwable) { /* * siccome stiamo lavorando con un array * $key aiuta a identificare di quale logger si tratta */ throw new \Exception( "Il logger $key ha sollevato un'eccezione inaspettata", $XXX, $throwable ); } }
Devi accedere o registrarti per scrivere nel forum
2 risposte