(PHP) каким образом можно перехватывать Ocierror()

__1@1
Дата: 18.09.2006 16:25:09
каким таким образом можно перехватывать осёвые ерроры.
типа
автор
" table or view does not exist... "
зХФНБОУ
Дата: 18.09.2006 16:31:19
можно попробовать через try {} catch {} или что-то типа этого oci_error()
__1@1
Дата: 18.09.2006 17:37:14
зХФНБОУ
можно попробовать через try {} catch {} или что-то типа этого oci_error()

это жжж не жаба - это пхп!?
зХФНБОУ
Дата: 18.09.2006 17:52:26
__1@1
зХФНБОУ
можно попробовать через try {} catch {} или что-то типа этого oci_error()

это жжж не жаба - это пхп!?

oci_error() работает точно - возвращает последнею ошибку от Oraclы.
А try catch перехватывает ошибки только в классах, а классы в PHP тоже есть.
__1@1
Дата: 18.09.2006 18:39:26
2 зХФНБОУ
я не с порю oci_error() действительно перехватывает ош. но сделать так, чтоб выводила не ося а моя какая нить echo почемуто не выходит...
при таком коде :
        try {
          $res = ociexecute($qr, OCI_DEFAULT);
          if (!$res) {echo 'error 2: '; var_dump(ocierror($qr));}//(ocierror($qr));
          else $result = $qr;
        }
        catch (Exception $e) {
          echo 'error 3 : ',  $e->getMessage(), "\n";
        }
выдаёт
автор
Warning: ociexecute() [function.ociexecute]: ORA-00900: invalid SQL statement in c:\www\cs_ossv\uhrm\include\db.php on line 17
error 2: array(4) { ["code"]=> int(900) ["message"]=> string(32) "ORA-00900: invalid SQL statement" ["offset"]=> int(0) ["sqltext"]=> string(83) "-select t.wi_id, t.wi_number, t.wi_date, t.wi_prov_date, t.status from wh_invoice t" }

Warning: ocifetch() expects parameter 1 to be resource, boolean given in c:\www\cs_ossv\uhrm\index.php on line 16

Всего :
Warning: ocirowcount() expects parameter 1 to be resource, boolean given in c:\www\cs_ossv\uhrm\index.php on line 29

Warning: ocifreestatement() expects parameter 1 to be resource, boolean given in c:\www\cs_ossv\uhrm\index.php on line 30

тоесчть сначала выводится осёвая ошибка, и почемуто аж никак не перехватывается

P.S. Oracle 10g | PHP 5.
Гутманс
Дата: 19.09.2006 09:20:32
__1@1

Вам нужно этот код
 $res = ociexecute($qr, OCI_DEFAULT);
обернуть в класс. Класс отнаследовать от Exception. В методе, где юзается это ociexecute, если ошибка возникает кидать эксепшен функцией throw new Exception("бла бла бла");
А при создании экземпляра объекта писать как-то так:
$obj = new MyClass();
try
{
$obj->exec();
}
catch (Exception $e)
{
echo $e->getMessage();
}
и получите то, что вы хотите.
__1@1
Дата: 19.09.2006 15:40:34
создаётся такое впечатление, что это судя по всему не ексепшн.
__1@1
Дата: 20.09.2006 16:35:33
не получается перехватывать, может это какие нибудь настройки сенрвака...?
Гутманс
Дата: 20.09.2006 18:17:57
__1@1
не получается перехватывать, может это какие нибудь настройки сенрвака...?

Я описал механизм эксепшенов, который существует сейчас в PHP5-ом. Работает только с классами. С обычными функциями нет. В принципе ты как бы сам генеришь нужные тебе экспшены при отработке глючных мест. Как бы вместо if (!func()) echo "Ошибка"; получаешь некое централизованное место управление этими эхами. Тут поподробнее http://ru.php.net/manual/ru/language.oop5.php
__1@1
Дата: 21.09.2006 13:54:56
тоесть єта фича перехватит віводна екран всяких там print & echo?