likemandrake
15.06.2007, 20:01:54
Witam
Jestem na topie tworzenia klasy LogedException, ktora dziedziczy poklasie Exception, z tym wyjatkiem ze moja klasa bedzie odpowiednie komunikaty logowala do pliku.
Pytanie dotyczy tego, jak zachowac sie z obsluga bledow w tej klasie, typu nie otwarto pliku, bo brak uprawnien, czy tam katalog nie istnieje (w sumie to beda wlasnie tylko ewentualne bledy zglaszane przez funkcje do operacji na plikach). Zglaszanie tego typu bledow przez tworzenie nowego wyjatku typu Exception nie ma tu raczej sensu, bo sama klasa jest do tego zadania, generowanie bledow przez funkcje trigger_error znow nie jest dopuszczalne w powaznym serwisie, konkretnie chodzi o same wyswietlenie bledu na stronie (to jest niedopuszczalne), tak wiec czy sa jakeis pomysly? czy mam po prostu niereagowac na wynikle bledy i uzywac funkcji do oblslugi plikow pomijajac je znakiem "@" ?
Prosze o powazna porade
Pozdrawiam
starach
15.06.2007, 20:16:55
Jak wystąpi błąd krytyczny to loguj do pliku xml z datą wystąpienia błędu , jego opisem z debug_backtrace(), adresem ip użytkownika oraz ewentualnie całym urlem żadnym przez klienta i powiadamiaj na email admina.
likemandrake
15.06.2007, 21:59:13
Witam
Wiec pojawia sie pytanie, kiedy funkcje do obslugi plikow (tutaj fopen, fwrite, bo inne nie beda potrzebne) zglaszaja blad krytyczny? Z tego co wiem to nigdy, nie wiem czy sie zrozumielismy, ale mnie chodzilo o blad ktory wystapi w klasie LoggerException (np nie udalo sie otworzyc pliku, do ktorego klasa loguje wyjatki, jakie sa do niej przeslane), a nie jak zostanie zgloszony wyjatek. Jak mowilem, klasa ktora chce napisac, zglaszane wyjatki ma logowac do pliku.
Pozdrawiam serdecznie
mike
15.06.2007, 22:09:14
Możesz robić tego typu rzeczy:
<?php
$fileHandle = @fopen('file.txt', 'r'); if ($fileHandle === false) {
throw new Exception();
}
?>
I dopiero to łapać i obsługiwać. Inaczej tego nei zrobisz.
Poza oczywiście przepisaniem systemu obsługi błędów na swój.
fridek
15.06.2007, 23:41:52
No właśnie, zawsze masz jeszcze error_reporting(E_ALL) i error_handler().
likemandrake
16.06.2007, 00:20:16
Dobra dzieki za wszystko, czyli w sumie niczego nowego sie nie dowiedzialem, bo terminy ktore sie pojawily nie sa mi obce

Myslalem, ze moze da sie to jeszcze zrobic w inny sposob, stad ten post...
W kazdym razie, jeszcze raz wielkie dzieki za fatyge
Pozdrawiam
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.