2012-09-11 30 views
0

如果我有一个c1.php可读性差的错误?

<?php 
class C1 { 
    function f1($value) { 
     if($value == 'ok') { 
      echo "OK!"; 
     } else { 
      throw new Exception("WRONG!"); 
     } 
    } 
} 
?> 

和index.php文件

<?php 
require_once('c1.php'); 
$c = new C1(); 
$c->f1('ok'); 
$c->f1('asd'); 
?> 

任何人都可以知道,如何构建一个良好可读的错误信息,如“错误:你在C错误的值: \ XAMPP \ htdocs中\ PROJEKT \的index.php:5" 号线,而不是tracktracing

OK! 
Fatal error: Uncaught exception 'Exception' with message 'WRONG!' in 
C:\xampp\htdocs\projekt\c1.php:7 Stack trace: #0 
C:\xampp\htdocs\projekt\index.php(5): C1->f1('asd') #1 {main} thrown in 
C:\xampp\htdocs\projekt\c1.php on line 7 

,阅读是有点困难。

回答

-1

简单,不要使用异常。他们应该在你尝试赶上或出现异常情况时使用。这并不例外 - 这意味着没有任何事情可能只用if-else语句就可能导致错误。

所以只需要回显您所选择的错误信息。

3

赶上例外。这是异常点..他们是可捕捉的,你可以用这些信息做一些事情(比如输出只是消息)。

2

你可以做这样的事情:

try { 
    $c = new C1(); 
    $c->f1('ok'); 
    $c->f1('asd'); 
} catch(Exception $e) { 
    echo 'Error: you have wrong value in ', $e->getFile(), ' on line ', $e->getLine(); 
    // ... code 
} 
+0

我知道try和catch,但是如何显示调用的确切位置(文件和行),如“$ c-> f1('asd');”。谢谢。 – iff

+1

@iff这就是Exception :: getFile()和Exception :: getLine()函数返回时,该文件和Exception抛出的行。见[php文档](http://php.net/manual/en/class.exception.php) – FrankLav

0

我接住了

try { 
    .. 
} catch(Exception $e) { 
    //echo $e->getTraceAsString(); 
     $t = $e->getTrace(); 
     $t = $t[0]; 
     echo 'Error: file - ',$t['file'],' - line: ',$t['line'], 
        ' - function: ',$t['function'],'; ',$e->getMessage(); 
} 

谢谢你的提示。