PHP try-catch支持短符号?

时间:2012-01-09 22:59:43

标签: php try-catch notation

这合法吗?不靠近我的工作电脑所以无法测试

try
    someClass::someStaticFunction();
catch(Exception $e)
    $e->getMessage();

特别是缺少括号,类似于if-else语句

if(someBool)
    someClass::someStaticFunction();
else
    someClass::someOtherFunction(); 

干杯!

4 个答案:

答案 0 :(得分:3)

不,你必须使用支架。请注意,您可以按类型捕获异常:

try {
  someClass::someStaticFunction();
} catch (MyException $e) {
  // do specific stuff for this exception
} catch (Exception $e) {
  // do stuff for other exceptions
}

答案 1 :(得分:1)

不,似乎不起作用。

点击此处查看我的示例:http://codepad.org/BpSBiPDY

答案 2 :(得分:0)

不,不是,没有替代try / catch的语法......它只有8个字符加上Exception $ e ...这不是很长

答案 3 :(得分:0)

try-catch 在我知道的所有语言(C#、JavaScript 等)中都需要强制括号;

我认为原因是从一开始就避免(小或大)混乱,例如来自 if() 构造,因为它支持缺少括号和可选的 else 部分;

例如,在代码中:

if(a==0) if(b==3) ++a; else ++b;

if() 指的是哪个 else 部分?

我们肯定都知道,在上面的代码中,else 部分指的是第二个 if()(最近的 if()),但是有时当您快速输入代码(或快速检查已经输入的代码),大家也都知道这一点。

所以,因为在 try catch(和 finally)中,catchfinally 部分是可选的,而 catch部分甚至可以重复(我的意思是,您可以为要捕获的不同类型的错误放置更多的 catch 部分),我认为语言的设计者从一开始就希望避免可能来自缺少括号是一些关键情况。