Seite 1 von 1

GELÖST Exceptions aus vendor-Klasse "selbst" behandeln ?

Verfasst: 29.05.2021 13:04
von mad-manne
EDIT 18:24 Hab es dann doch selber rausgefunden :grin:
--------------------------
Hallo ... ich schon wieder, aber diesmal nix REGEX sondern exception-Handling(von dem ich bisher auch quasi keine Ahnung habe :o )
Insofern bitte ich falsche Terminolgie zu entschuldigen, da das eben auch noch Neuland für mich ist :D

Es geht um folgendes Problem:
Ich schreibe ein Script, welches eine fertige Klasse(via Composer eingebunden) nutzt und versuche nun herauszufinden, wie man die dort vorhandenen Exceptions selbst "abfangen/nutzen" kann, anstatt dass die genutzte Klasse ihren eigenen Fehler-Output ausgibt wie hier zu sehen.
[ externes Bild ]

Ich nehme jetzt mal ein ganz konkretes Beispiel ... es geht um die Ddeboer\Imap-Klasse
Dort gibt es für die server\authenticate-Methode eine "eigene" Exception namens

Code: Alles auswählen

        if (false === $resource || null !== $errorMessage) {
            throw new AuthenticationFailedException(\sprintf(
                'Authentication failed for user "%s"%s',
                $username,
                null !== $errorMessage ? ': ' . $errorMessage : ''
            ), $errorNumber);
        }
Ich würde also gerne diese Exception selbst behandeln, aber das hier scheint nicht zu funktionieren, da der Fehler ja offenbar schon in der genutzten Klasse behandelt wurde und gar nicht in meiner eigenen CATCH-Anweisung "landet"

Code: Alles auswählen

            // Connect to the current server
            try {
                $imap_connection = $this->imapAccountsController->connect(
                    $imap_account['hostname'],
                    $imap_account['port'],
                    $imap_account['imap_open_flags'],
                    $imap_account['username'],
                    $imap_account['password']
                );
            } catch (AuthenticationFailedException $e) {
                $output->writeln('<error>'.$e->getMessage().'</error>');
            }
Bin für jeden Hinweis dankbar ... vielleicht geht es ja sogar ganz einfach und man(ne) muss nur ein paar zusätzliche Tricks anwenden, um das zu lösen.

Danke im Voraus,
Manne