dongping9475 2019-07-30 09:55
浏览 375
已采纳

在函数中捕获异常,在try-catch中调用。 不起作用,为什么?

I'm trying to call a function inside try block and if it fails, catch an exception. My code doesn't work right, what am I doing wrong? Sorry, I'm new on exceptions. Anybody? Any help appreciated :D

What I tried and what doesn't works:

  1. function check ($func) {
  2. try {
  3. call_user_func($func);
  4. } catch (Exception $e) {
  5. echo "An error occurred.";
  6. }
  7. }
  8. function test () {
  9. echo 4/0;
  10. }
  11. check("test");

Returns just "INF" and "Division by zero" error, but should catch that exception and return "An error occurred."

  • 写回答

1条回答 默认 最新

  • dounieqi6959 2019-07-30 10:08
    关注

    Trying to throw an object that is not will result in a PHP Fatal Error using set_exception_handler().

    For more details -

    1- https://www.php.net/manual/en/language.exceptions.php#language.exceptions.catch

    2- https://www.php.net/manual/en/class.errorexception.php

    Try the below code, now error will go to catch.

    1. function exception_error_handler($severity, $message, $file, $line) {
    2. if (!(error_reporting() & $severity)) {
    3. // This error code is not included in error_reporting
    4. return;
    5. }
    6. if($message == 'Division by zero'){
    7. throw new DivisionByZeroError('Division By Zero Error');
    8. }else{
    9. throw new ErrorException($message, 0, $severity, $file, $line);
    10. }
    11. }
    12. set_error_handler("exception_error_handler");
    13. function check ($func) {
    14. try {
    15. call_user_func($func);
    16. }
    17. catch (DivisionByZeroError $e) {
    18. echo "An Division error occurred - ".$e->getMessage(); //$e->getMessage() will deisplay the error message
    19. }
    20. catch (Exception $e) {
    21. echo "An error occurred - ".$e->getMessage(); //$e->getMessage() will deisplay the error message
    22. }
    23. }
    24. function test () {
    25. echo 4/0;
    26. }
    27. check("test");

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 有人帮看看这个问题的嘛
  • ¥15 STM32悬赏求解答,ai不要来解答
  • ¥15 Mysql 一张表同时多人查询和插入怎么防止死锁
  • ¥20 centos6.7 安装libevent库.总是报错,如何解决?
  • ¥15 电脑买回,学校的有线网络总掉。
  • ¥20 关于普洛菲斯触摸屏与AB连接地址问题
  • ¥15 syri可视化不显示插入缺失
  • ¥30 运行软件卡死查看系统日志分析不出来
  • ¥15 C语言代码改正特征选择算法设计,贝叶斯决策,,设计分类器,远程操作代码修正一下
  • ¥15 String 类valuve指向的问题
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部