- 論壇徽章:
- 0
|
@運(yùn)算符沒深入研究,但是根據(jù)基本原則,我覺得你的代碼中存在一些問題:
@是用于抑制錯(cuò)誤輸出的,因此不參與拋出異常的情形;
運(yùn)算符的優(yōu)先級(jí);
帶有流程控制的運(yùn)算符的用法;
@list($a,$b) = foo() or throw new Exception('undefined index exception');
1:除去分號(hào)和@,整行代碼就是一個(gè)表達(dá)式,而@是對表達(dá)式起作用,也就作用于整行代碼,而不僅僅是出錯(cuò)的子表達(dá)式;
2:要更清晰的表達(dá)代碼的意圖,使用括號(hào)比較好,應(yīng)該也可以把@置于子表達(dá)式中;
3:=優(yōu)先級(jí)高于or,因此,要執(zhí)行throw,應(yīng)該是前面的字表達(dá)式的值==false,而不是子表達(dá)式出錯(cuò)的情形(我猜測你的意圖),這里,子表達(dá)式的值也就是foo的返回值,這么看來,or后面的處理似乎與@的目的沖突了,但實(shí)際上他們勇于不同的目的。
我覺得可以這樣:foo()可能返回==false的值,表明失敗,此時(shí):
list($a,$b) = (foo() or throw new Exception('undefined index exception'));
如果foo()可能輸出一些錯(cuò)誤描述,不妨再考慮@。 |
|