Cannot set exception code for custom exception
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
The following code:
<?php
class Example extends \Exception {
protected $code = 5;
}
echo ' → ', (new Example(''))->getCode(), \PHP_EOL;
echo '0 → ', (new Example('', 0))->getCode(), \PHP_EOL;
echo '1 → ', (new Example('', 1))->getCode(), \PHP_EOL;
Resulted in this output:
→ 5
0 → 5
1 → 1
But I expected this output instead:
→ 5
0 → 0
1 → 1
There is a note about default parameters in exception constructor on php.net. However, case 2 in the above example explicitly passes the code parameter to the constructor.
Calling the constructor of class Exception from a subclass ignores the default arguments, if the properties
$codeand$messageare already set. about default parameters in exception constructor on php.net.
PHP Version
PHP 8.2
Operating System
Debian 11
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Der Bericht stellt einen PHP-8.2-Reproducer bereit, der eine benutzerdefinierte Exception-Unterklasse, den Exception-Konstruktor und getCode() umfasst. Beginne damit, diese Einstiegspunkte in php-src zu finden und alle drei Konstruktoraufrufe zu reproduzieren. Als erledigt gilt die Aufgabe, wenn ein explizit übergebener Code von 0 erhalten bleibt und die anderen gezeigten Ausgaben weiterhin korrekt sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100