一段PHP异常

这是我写的一段代码,里面通过PHP异常功能,实现报错时显示出错代码所在行。当使用者操作出错时,截图给我,我可以很快得去追踪和排查错误!

public function added_business_submit(){
    try{
        extract($_POST);
        if(‘‘==$title)          self::json(0,sprintf(ERROR_EMPTY,‘工单标题‘));
        if(‘‘==$is_trusteeship) self::json(0,sprintf(ERROR_EMPTY,‘服务器类别‘));
        if(‘‘==$eqroom_id)      self::json(0,sprintf(ERROR_EMPTY,‘所在机房‘));

        M()->startTrans();
        $com_info     = M(‘company‘)->where(array(‘com_qyuserid‘=>$com_qyuserid))->find();
        $com_id       = $com_info[‘com_id‘];
        $com_name     = $com_info[‘com_name‘];
        if(empty($com_info)) throw new Exception(ERROR_NOTFOUND_USER);

        $data = array(
            ‘com_id‘       => $com_id,
            ‘com_name‘     => $com_name,
            ‘type‘         => 1,
            ‘step‘         => 1,
            ‘poster‘       => self::$user[‘name‘],
            ‘posttime‘     => self::$datetime,
            ‘eqroom_name‘  => D(‘EquipRoom‘)->get_eqroom_name($eqroom_id),
        );
        $data = array_merge($data,$_POST);
        $agent_id = M(‘working_agent‘)->add($data);
        if(false===$agent_id) throw new Exception(ERROR_SUBMIT);

        $result = D(‘StepLogAgent‘)->next_step($agent_id,$remark);
        if(false===$result) throw new Exception(ERROR_SUBMIT);
    }catch(Exception $e){
        M()->rollback();
        $this->exception_handle($e);
    }

    M()->commit();
    self::json(1,SUCCESS_SUBMIT);
}

private function exception_handle(Exception $e){
    $msg  = $e->getMessage();
    $line = $e->getLine();
    //**/print_r($e); echo M()->getLastSql();
    $name = self::$user[‘name‘];
    $time = self::$datetime;
    $sql  = M()->getLastSql();
    $log  = $time." ".$name.":{$msg}({$line}) {$sql}";
    self::mylog($log,‘Agent‘);
    self::json(0,"{$msg}({$line})");
}
时间: 2024-08-26 19:39:52

一段PHP异常的相关文章

Java异常笔记整理

参考书籍:Head First Java 1.假设某方法是别人写在某个类里面的 2.而此时你根本就不知道这个方法是否有风险(比如服务器出故障会使程序受到影响): 3.那最好的方法应该就是,在调用这个类的方法时,加上可能发生异常的处理方案,未雨绸缪. 关键字:try……catch,throws,throw,finally try……catch其实就是给编译器的一个信号,表示你已经注意到了这个异常并开始着手进行应对: 编译器需要程序员try包裹住可能发生异常的代码,再通过catch去处理 Runti

JAVA笔记9__异常/throw关键字

/** * 异常:在程序中导致程序中断运行的一些指令 * 1.受检异常:编译期 * 2.非受检异常:运行期 * 异常处理过程分析: * 1.一旦产生异常,系统会自动产生一个异常类的实例化对象 * 2.此时如果存在对应try语句,则执行,否则程序将退出,并由系统报告错误 * */ public class Main { public static void main(String[] args) { /* try{ //有可能发生异常的代码段 }catch(异常类型对象){ //异常的处理操作 }

java 异常小结

本篇不打算冗长介绍各种异常,只写出通用的应该遵循的异常处理规范(个人理解,如有错误欢迎指正) 1. 检查异常(checked exception),通常见到的有SQLException,IOException,InterruptedException,ConnectTimeOutException,ClassNotFoundException等等.这些异常往往是由于数据库,网络和资源问题导致的,不是程序本身正常运行的情况.这些异常被认为是可以恢复的,比如网络异常可以通过重试几次有可能就解决了.这

窗体Showmedol 遇到的奇怪异常-->进阶问题

procedure SetTransparentForm (popupFrm:TForm;Color:TColor;AlphaBlendValue:Integer); var FrmTransparent: TFrmTransparentForm; begin if not Assigned(FrmTransparent) then FrmTransparent:=TFrmTransparentForm.Create(nil); FrmTransparent.fPopupForm :=popup

Java异常(Exception)

Java异常:运行期出现的错误 1. Java异常是Java提供的用于处理程序中错误的一种机制: 2. 错误指的是程序运行期间发生的异常事件,如除零溢出.数组下标越界.读取的文件不存在.... 3. Java程序的执行过程中如出现异常事件,会生成一个异常类对象,该异常对象封装了异常事件的信息并将其提交给Java运行时系统,此过程称之为抛出异常(throw exception): 4. 当Java运行时系统接收到异常对象后,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,此过程称之为捕获异

x86关于中断和异常的总结

<一>80386的中断和异常 8086/8088把中断分为内部中断和外部中断两大类.为了支持多任务和虚拟存储器等功能,80386把外部中断称为“中断”,把内部中断称为“异常”.与8086/8088一样,80386通常在两条指令之间响应中断或异常.80386最多处理256种中断或异常. 1.中断 对80386而言,中断是由异步的外部事件引起的.外部事件及中断响应与正执行的指令没有关系.通常,中断用于指示I/O设备的一次操作已完成.与8086/8088一样,80386有两根引脚INTR和NMI接受

java异常的总结

1.异常概述: 什么是异常? 异常是一个类,用来描述程序运行时出现的不正常现象. 异常的由来: 异常源于现实生活中对于问题的描述,现实生活中的问题也是事物,问题也具有众多属性和行为,比如问题名称. 问题信息.问题原因.问题情况等.所以问题也可以被描述,并封装成对象.而现实生活中具有很多很多具体的问题, 这些问题有共性之处,也有不同之处,所以向上抽取,就会形成一个体系. JAVA中用这样的一个体系来描述现实生活中问题的体系: Object |--Throwable |---Error |----O

python——异常except语句用法与引发异常

except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,<数据>:捕获指定异常及其附加的数据 except:<异常名1,异常名2>:<数据>:捕获异常名1或者异常名2,及附加的数据库 常用异常名: 异常名    描述 AttributeError 调用不存在的方法引发的异常 EOFError     遇到文件末尾引发的异常 Impor

Java学习总结(六)——(Map集合,Comparator接口,异常等)

一.Comparator接口 *Comparator接口的使用 (1)使用Comparable接口定义排序顺序有局限性:实现此接口的类只能按compareTo()定义的这一种方式排序. (2)如果同一类对象要有多种排序方式,应该为该类定义不同的比较器(实现Comparator接口的类)TreeSet有一个构造方法允许给定比较器,它就会根据给定的比较器对元素进行排序. (3)Comparator接口中的比较方法 示例:public int compare(Object o1, Object o2)