2012-09-11 41 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(); 
} 

謝謝你的提示。