**一.改进原因** 在PHP8前,不允许在单个表达式时引发异常,现在可以在箭头函数、三元表达式等单个表达式的任何地方引发异常. **二.箭头函数使用** //第1阶段 ~~~ function show(){ return 123; } echo show(); // 第2阶段 $fn=function(){ return 123; }; echo $fn(); //第3阶段 echo (function(){ return 123; })(); // 第4阶段 $fn=fn()=>123; echo $fn(); // 第5阶段 echo (fn()=>123)(); ~~~ **三.箭头函数+引发异常** 1.先定义后执行 ~~~ $fn=fn()=>throw new Exception('error'); try{ $fn(); }catch(Exception $e){ echo $e->getMessage(); } ~~~ 2.定义并同时执行 ~~~ (fn() => throw new Exception('oops'))(); ~~~ **四.三元表达式使用** ~~~ $name=false; $age=20; $r=$name ? $name : $age; $r=$name ?: $age; $r=$name ?? $age; var_dump($r); ~~~ **五.三元表达式+引发异常** #前面为真则返回第二个值,否则返回第三个值 ~~~ $value = $name ? $name : throw new Exception('value not set'); $value = $name ?: throw new Exception('value not set'); ~~~ #前面存在则返回第一个值,否则返回第二个值 ~~~ $value = $name ?? throw new Exception('value not set'); ~~~