PHP try-catch: get-variable definiert, die in versuchen
Ich versuche zum Debuggen von code. Ich möchte zeigen können Variablen definiert, die in try
im catch
. Zum Beispiel die variable $siteId
.
<?php
try {
$siteId = 3;
if(1 !== 2) {
throw new Exception('1 does not equal 2!');
}
} catch(Exception $e) {
$moreInfo = '';
if(isset($siteId)) {
$moreInfo .= ' SiteId»' . $siteId;
}
echo 'Error' . $moreInfo . ':' . $e->getMessage();
}
?>
Die Antwort, die ich bekommen, ist Error: 1 does not equal 2!
statt Error SiteId»3: 1 does not equal 2!
. Was mache ich falsch?
- Für mich funktioniert...
- Jup, ich habe keine Probleme, dass der gewünschte output (" Fehler SiteId»3:1 ist nicht gleich 2!")
- Oh. Sie Jungs sind richtig! Es funktioniert: ideone.com/ctbe8q ich denke, es ist etwas anderes in meinem code das Problem verursacht. Danke!
- Funktioniert wie erwartet mit allen PHP-5-Versionen - 3v4l.org/IKODl#tabs
- "zu lokalisierten, vermutlich einige syntax-Fehler anderswo" (Grund für die enge Abstimmung)
- Tut mir Leid, Sie zu stören Jungs... Es muss etwas sein, irgendwo in meinem code. Wie kann ich "Abbrechen" in dieser Frage?
- Gibt es einen link "löschen", direkt unter Ihrer Frage.
- Sie sollten sich wirklich überlegen, markieren Sie die Antwort durch Naib als die richtige. Die anderen beiden (die haben mehr Stimmen derzeit) falsch sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Deklarieren $siteId außerhalb des try/catch-Konstrukt und verwenden
!empty($siteId)
im catch.Variablen in PHP sind, eingeschränkt auf die Datei, Methode oder Funktion (siehe http://php.net/manual/en/language.variables.scope.php), so bin ich nicht sicher, wie dies nicht für Sie arbeiten. Eine schnelle cut-n-paste in PhpStorm Ausgänge die richtige Antwort für mich.
Versuchen Sie
\
zuException
Klasse. So ist Ihr code:versuchen, um aus $siteId von try/catch:
Ich bin mit der PHP-7.2, in meinem Fall eine variable definiert, die in einem Try-block nicht verfügbar ist innerhalb der fangen, daher hier ein workaround:
Ich hatte das gleiche Problem in php7 und irgendwie hat diese Arbeit für mich