可读性好的错误


Well readable error?

如果我有一个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:''examplep''htdocs''projekt''index.php:line5中有错误的值",而不是跟踪

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

阅读有点困难。

捕获异常。这是例外的要点。。它们是可捕获的,并且您可以对信息执行某些操作(例如..只输出消息)。

您可以这样做:

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
}

我捕捉到了

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();
}

谢谢你的提示。

简单,不要使用异常。它们应该在你尝试接球或特殊情况下使用。这并不是例外——这意味着只有if-else语句就不可能出错。

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