PHP - как сохранить работоспособность программы при возникновении ошибки - PullRequest
1 голос
/ 30 ноября 2011

В примере кода:

<?php
    for ($i = 1; $i <=20; $i++) {
        echo $i . '<br />';
        if ($i == 10) {
            $haha->hoho("hehe");
        }
    }
?>

Когда $ i = 10 программа выдаст эту ошибку, Call to a member function hoho() on a non-object, потому что $ haha ​​не является объектом и программа прекращает работу.Я хочу, чтобы программа обработала эту ошибку и продолжала работать до $ i = 20.Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Простой ответ: Исправьте свой код.

Длинный ответ:

Есть много способов сделать это, первое, что нужно мне в голову, это использовать set_error_handler() независимо от вашего шаблона программирования.

Но если вы делаете это в ООП, вы должны использовать магические методы ( что? ), например__call и __get - очевидно, $haha должен быть объектом в вашем примере.

Подсказка: использование Exception в магических методах это действительно хорошая идея.но вы не можете обработать это напрямую, за исключением того, что внутренние функции PHP в основном используют отчеты об ошибках, только современные объектно-ориентированные расширения используют исключения.

0 голосов
/ 30 ноября 2011

Я бы попробовал что-то вроде:

<?php
    for ($i = 1; $i <=20; $i++) {
        echo $i . '<br />';
        if ($i == 10) {
            if ($haha) $haha->hoho("hehe");
        }
    }
?>

Это должно проверить, существует ли $haha, прежде чем оно попытается сделать $haha->hoho("hehe");

...