背景:次の明らかに間違った PHP があるとします。
try{
$vtest = '';
print(array_pop($vtest));
}catch(Exception $exx){}
array_pop で動作させるには、$vtest は明らかに文字列ではなく配列である必要があります。それにもかかわらず、このコードを実行すると、警告が表示されます。私はそれを望んでいません。コードが静かに失敗することを望んでいます。
質問:他の言語と比較して、PHP の try-catch が機能しない原因となる特別な点はありますか?
免責事項: 参考までに、PHP でこの状況を処理する他の方法があることは事実ですが、これらは望ましくありません。ここでの目標は、次のことを回避することです。
「アットマーク」トリック:
$vtest = '';
print(@array_pop($vtest)); // <-- would like to avoid this
型キャスト:
$vtest = '';
$vtest = (array)$vtest;
print(array_pop($vtest));