/**
  * Register exception
  * @param mixed $a_arg0
  * @param mixed $a_arg1
  * @param mixed $a_arg2
  * @return ZModule
  */
 public function &triggerError($a_arg0, $a_arg1 = null, $a_arg2 = null)
 {
     switch (func_num_args()) {
         case 1:
             switch (gettype($a_arg0)) {
                 case 'object':
                     if ($a_arg0 instanceof Exception) {
                         Zoombi::getApplication()->emit(new ZEvent($this, '_triggerError', $a_arg0));
                     }
                     break;
                 case 'string':
                     $tr = debug_backtrace();
                     array_shift($tr);
                     $e = new ZException($a_arg0, E_USER_ERROR);
                     $e->setTrace($tr);
                     $this->emit(new ZEvent($this, '_triggerError', $e));
                     break;
             }
             break;
         case 2:
             $e = new ZException($a_arg0, $a_arg1);
             $e->setTrace($a_arg2);
             $this->emit(new ZEvent($this, '_triggerError', $e));
             break;
     }
     return $this;
 }
 /**
  * Register exception
  * @param mixed $a_arg0
  * @param mixed $a_arg1
  * @param mixed $a_arg2
  * @return ZModule
  */
 public function &triggerError($a_arg0, $a_arg1 = null, $a_arg2 = null)
 {
     switch (func_num_args()) {
         case 1:
             switch (gettype($a_arg0)) {
                 case 'object':
                     if ($a_arg0 instanceof Exception) {
                         Zoombi::getApplication()->emit(new ZEvent($this, '_triggerError', $a_arg0));
                     }
                     break;
                 case 'string':
                     $tr = debug_backtrace();
                     $e = new ZException($a_arg0, E_USER_ERROR);
                     $e->setLine($tr[0]['line']);
                     $e->setFile($tr[0]['file']);
                     Zoombi::getApplication()->emit(new ZEvent($this, '_triggerError', $e));
                     break;
             }
             break;
         case 2:
             $tr = debug_backtrace();
             $e = new ZException($a_arg0, $a_arg1);
             $e->setLine($tr[0]['line']);
             $e->setFile($tr[0]['file']);
             Zoombi::getApplication()->emit(new ZEvent($this, '_triggerError', $e));
             break;
         case 3:
             $e = new ZException($a_arg0, $a_arg1);
             if ($a_arg2 and is_array($a_arg2) and count($a_arg2) > 0) {
                 $a =& $a_arg2[0];
                 if (is_array($a)) {
                     if (array_key_exists('line', $a)) {
                         $e->setLine($a['line']);
                     }
                     if (array_key_exists('file', $a)) {
                         $e->setFile($a['file']);
                     }
                     $e->setTrace($a_arg2);
                 }
             }
             Zoombi::getApplication()->emit(new ZEvent($this, '_triggerError', $e));
     }
     return $this;
 }