• Java和php中的try-catch分析


    描述:对一个健壮的系统来讲,异常处理是必不可少的一部分,针对异常的管理,主要就是异常的捕获和处理操作,然而在php中使用try-catch的时候,我个人感觉没有java中的舒服,因为在php中try-catch时,你要手动throw异常才能达到你预期的异常处理效果,而java不同,你无需去手动throw异常,在try区域中,会自动捕获异常,并处理。

    php:try-catch实例

        1:创建一个可抛出一个异常的函数

           function testError(){

            $s=2/0;

            throw new Exception("Value must be 1 or below");//这里必须进行手动throw异常才行

              return true;

           }

    2:在 "try-catch" 代码块中捕获异常

      try {

             testError();

             echo '当一个整数除以一个0后,如没有手动throw异常的话,仍然会执行到这里。';

            }catch(Exception $e) {

              echo 'Error Message: ' .$e->getMessage();

       }

    注:执行上面的测试程序后会出现下面提示:

    看到上面的一些提示后,我们作为开发人员就明白了大致是什么错误导致的这个异常,但是作为一个健壮的系统来讲,这些提示是不应该显示给用户的,提供给用户看到的是一些友好的提示信息,我们真正让用户可见的就是红框中的信息(这里是测试输出的信息,可以在此做其他友好处理),除了红框中的信息,其他都是不需要显示的,我们只需要把php.ini中的display_errors = On关闭即可,即display_errors = Off。关闭后重启一下apache,再访问一下刚才的测试程序,就会只显示上面红框中的提示信息了。
    这里主要验证一下php中try-catch时必须手动throw才行,验证如下:
       把异常函数中throw这一句进行注释掉,然后在运行测试一下,则会出现下面的提示:

       “当一个整数除以一个0后,如没有手动throw异常的话,仍然会执行到这里”
      这意味着当程序出现异常时,在try-catch中没有被捕获处理,反而下面的代码页照常给执行了,这不是我们想要的;我们再次把刚才注释掉的throw一句给去掉后,就可以正常的捕获处理异常了。

    java:try-catch实例:    

    public class TestTry{

        public static void testError(){

           int i=3,n=0;

           int s=i/n;

        }

       public static void main(String[] args){

        try{

           TestTry.testError();

           System.out.println("Goto here");

        }catch(Exceptione){

           System.out.println("ErrorMessage:"+e);

        }

       }

    }

    执行上面的验证程序后:Error Message:java.lang.ArithmeticException: /by zero

    注:可以看出以上java验证程序中的try-catch模块没有手动去throw,而是在try区域会自动捕获处理。

    下一步将深入研究一下php的异常处理机制,如何才能进行自动操作。

    转载于:https://my.oschina.net/mapsh/blog/598135

  • 相关阅读:
    [oldboy-django][1初识django]阻止默认事件发生 + ajax + 模态编辑对话框
    第6章Zabbix分布式监控
    第5章Zabbix自动化监控
    第4章Zabbix监控实践
    第3章Zabbix完整监控
    第2章Zabbix基础进阶
    第1章1zabbix快速入门
    自动化利器-YUM仓库搭建实战
    CentOS7修改网卡为eth0
    NTP时间服务器
  • 原文地址:https://www.cnblogs.com/twodog/p/12134827.html
Copyright © 2020-2023  润新知