Angenommen, ich habe eine Funktion a
, die eine Ausnahme $e
auslöst. Daher sollte laut phpdoc
eine Annotation @throws
über der Definition von a
stehen.
Wenn ich eine andere Funktion b
rufe a
ist es gute Praxis / schlechte Praxis / richtig / falsch, eine @throw
Annotation über der Definition von b
zu haben, die anzeigt, dass b
diese Art von Ausnahme auslösen könnte?
@throws
Annotation ist für den Entwickler anzugeben, wenn die Funktion () eine Exception auslösen kann Zuerst , müssen Sie die Frage stellen: warum nicht die Ausnahme in% fangen co_de% Methode, gibt es einen triftigen Grund dafür?
Ja? so müssen Sie b()
Annotation hinzufügen, wird es Sie oder andere Entwickler, die Funktion () @throws
IS verwenden NICHT SICHER und sie werden entscheiden, ob sie es wollen
Fangen oder propagieren Sie die Ausnahme
Auch , da PHP Sie nicht dazu zwingt, eine von einer anderen Funktion ausgelöste Ausnahme abzufangen, wurde die b()
-Anmerkung zu muss / obligatorisch üben
Tatsächlich wirft b()
Ausnahmen. Ob dies direkt oder indirekt geschieht, ist für den Aufrufer irrelevant. Die Annotationen sollen nun keine internen Implementierungsdetails dokumentieren, die sich mit verschiedenen abgeleiteten Klassen ändern oder sogar variieren können. Stattdessen dokumentieren die Anmerkungen das sichtbare Verhalten für den Aufrufer , sodass die effektiven Ausnahmen ebenfalls Teil der Anmerkungen sein sollten.