如下:<?php$a = @(50/0);@mysql_query($sql);@mkdir('/usr/1/2 ');?>这和异常处理有什么区别???

解决方案 »

  1.   

    @(50/0);
    相当于$es = ini_get('error_reporting');
    error_reporting(0);//屏蔽出错信息
    (50/0);
    error_reporting($es);//恢复设置
    异常处理最重要是要捕获到异常,然后做一些特殊处理.而@只是屏蔽掉错误信息.
      

  2.   

    @屏蔽错误输出
    异常处理,使用try catch捕获异常,只有当函数或者表达式抛出异常的时候,才能处理.
    以$a = @(50/0)为例.function divide($a, $b)
    {
    if($b == 0)
    {
    throw new Exception("Division by zero!");
    }
    return $a/$b;
    }
    try{
      divide(50,0);
    }
    catch(Exception $e)
    {
    echo $e->getMessage();
    }