PHP Funktion makieren als "throws exception"

mercsen

Lt. Commander
Dabei seit
Apr. 2010
Beiträge
1.641
Moin,
ist es möglich wie z.b. in Java eine methode in einer Klasse mit einer throws klausel zu versehen?
Sodass ich als Programmierer dann sofort sehe, bzw. gewarnt werde das die Funktion eine Exception auslösen kann?
Da ich mir meine Libary selber schreibe weiß ich jetzt natürlich wo die exceptions fliegen könnten,aber da sie zugleich als API funktioniert damit die leute ihre eigenen Scripts schreiben können wäre ein workaround ganz hilfreich :-/
 

Timmey92

Commodore
Dabei seit
Okt. 2008
Beiträge
4.540
zu einer api gehört auch eine vernünftige dokumentation -> da kannste das reinhauen :p
 

mercsen

Lt. Commander
Ersteller dieses Themas
Dabei seit
Apr. 2010
Beiträge
1.641
in der doc steht es drinne ;)
Aber ich bin es z.b. von Java gewohnt, das wenn ich ein Objekt erzeuge und auf eine "unsichere" function zugreife, z.b. nem BufferedReader mir gleich eine Warnung in der IDE erscheint und der Compiler seinen dienst verweigert wenn die Methode eine exception schmeißt die nicht behandelt wird.
In PHP kann eine methode eine exception werfen und wenn sie nicht behandelt wird, dann verwandelt sei sich in eine UncaugthException. Ich will den Anwender quasi zwingen solche programm Teile in einen try / catch block zu packen.

@Jojo_44 nein das ist nicht was ich suche.
Ich habe mir eigene Exception Klasse gebastelt (2 stück, also ich habe es nicht übertrieben) und die werden evtl. mal geschmissen wenn man eine unzulässige Operation ausführt. Das hier im Dteail auszuführen würde zu lange dauern. Es ist schon so das eine exception zum Abbruch des programm teils führt, das auch vollkommen richtig, aber im catch block sollte man den behandeln können nur leider gibt eine methode keine auskunft darüber ob es irgendwann mal zu einer exception kommen kann.
In java geht es z.b. so:
Code:
public void blub() throws IOExcpetion

so weiß jeder der auf blub() zugreifen will das da ggf. eine IOException geworfen werden kann und sie nicht behandelt sondern nach oben durch den stack gereicht wird.
 

Kju

Cadet 4th Year
Dabei seit
Nov. 2001
Beiträge
74
Du kannst z.B. im Docblock angeben, dass die Funktion eine Exception werfen kann:

PHP:
/**
  * @throws InvalidArgumentException
  * @return void
  */
public function damnException() {
    throw new InvalidArgumentException();
}
Wenn jede Funktion einer Klasse eine Exception wirft, könnte man diese Klasse auch von einem Interface oder einer abstrakten Klasse erben lassen, die irgendwas mit Exception im Namen hat.
 

Ähnliche Themen

Top