Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Obsługa błędów
Forum PHP.pl > Forum > PHP
Bora
Mam własną klase DB próbuje do niej dorobić obsługe błędów.
chciałem żeby wraz zwykonainiem błędu był zwracany bład, numer lini z błędem i plik.
oczywiście moge to osiągnąć przez przesyłanie __LINE__ i __FILE__ wraz z wywołaniem każdej operacji, ale czyjest możliwe żeby w jakiś sposób pobierać te dane dopiero w przypadku powstania bedu już w klasie?questionmark.gif
[php:1:7cca7ab095]<?php
class DB{
.....
function del($tabela,$warunek=""){
$sql="DELETE FROM ".$tabela." WHERE ".$warunek;
if (mysql_query($sql)){
return true;
}else{
$this->_error();
return false;
}
}

function _error(){
$this->error[]=mysql_errno();
}
}



$db = new DB('localhost','***','***','***');
$db->del('test',"a='g'");
?>[/php:1:7cca7ab095]
Bora
Podejrzałem kod AdbDb V4.00 i tam jedyne co jest w ErrorMsg(); to zawartość mysql_error().
Ale może jest jakis sposób
tamin
Mam ten sam problem. Jak dam __LINE__ w klasie to mi pokazuje w ktorym miejscu w klasie blad wystapil. Jednym chyba rozwiazaniem jest sprawdzac czy sa bledy w danym skrypcie a nie w klasie. No chyba ze nie tak bardzo zalezy ci na __LINE__ i __FILE__.
Bora
zawsze można dać :

[php:1:ab86faa40f]<?php
$db->del('test',"a='g'",__LINE__,__FILE__);
?>[/php:1:ab86faa40f]

ale może da sie to zrobć żeby nie trzeba było tego przekazywać tylko potem w klasie jakoś tą wartość pobrać
Hammer
Mugłbyś sprubować napisać obsługe zastępującą orginaną z php, a wtedy zgłaszać błędy przez trigger_error, ale to by nie obsługiwąło błędów tylko w klasie, ale w całym skrypcie...
Bora
trigger_error:
Kod
It only works with the E_USER family of constants

wiec niestety odpada.
spenalzo
Może tutaj coś dla siebie znajdziesz.
Bora
niestety własny set_error_handler() zwraca libie z błędem w klasie a nie w pliku.
A czy jest jakiś sposób podejrzenia w której lini została wywołana dana metoda ostatnio questionmark.gif?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.