![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam następujący problem, mam własną klasę do obsługi bazy danych i drugą raportującą błędy na zasadzie zapisania informacji o błędzie w bazie. Oto fragment kodu gdzie skrypt zaczyna się dziwnie zachowywać (opiszę poniżej):
Jeśli w zapytaniu pojawi się błąd, np. zwykła literówka na zasadzie brak ', wtedy zamiast uzyskania błędu w przeglądarce, lub zapisania go przez ExceptionHandler, serwer wysyła mi pusty plik PHP do sićgnięcia przez przeglądarkę (plik typu: application/x-httpd-php). Jeśli zarzucę obsługę błedów własną klasą i klasycznie zrobie tak:
Skrypt zachowuje się już w bardziej oczekiwany sposób, tj. wyrzuca błąd i zatrzymuje się. Proszę o sugestie i z góry dziękuję. Ten post edytował albrzykowski 18.03.2009, 19:20:48 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 6 Dołączył: 24.07.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wklej proszę troche wiecej kodu. M.in. kod klasy "ExceptionHandler" i jakiś prosty przykład użycia funkcji execute()...
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
No teraz zapytania nie wkleje ale przykładowo np w memencie gdy wyglądałoby tak (z błędnem) (błąd z ' ) Kod klasy do obsługi wyjatków jest taki:
Dziękuję i pozdrawiam! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 6 Dołączył: 24.07.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj może to "zdebagować" i zamiast wyrzucać wyjątek, zrobić echo "Błąd!!!"; . Będziemy wtedy wiedzieli czy w ogóle dochodzi do tego momentu.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Przygotowałem specjalnie błąd: w kontrolerze dodaje newsa:
To :: rozgranicza pola dla metody update modelu (tylko dodaje żeby było wiadomo) I błąd jest zaraz po $newsTitle o jeden pojedynczy cudzysłów za wiele. metoda update wywołuje wewnetrzną metodę execute którą już wcześniej opisałem:
I w momencie próby zapisania newsa skrypt nie zgłasza nic tylko dostaje do pobrania plik PHP... pusty. Może powinienem obsłużyć lepiej raportpowanie i zamknąć odpowiednie partie kodu w try{} i catch{} tylko nie zabardzo wiem jak to ugryźć. Dzięki i pozdrawiam!! |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 25.12.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Napisz w jaki sposób wyłapujesz ten wyjątek, bo narazie pokazałeś, że go tylko wyrzucasz.
Pozdrawiam. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Wyłapuje wyjątek w ten sposób:
Pozdrawiam. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 25.12.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pusta strona pojawia się dlatego, że nie masz włączonego raportowania błędów. Wyjątki wyłapujesz nieprawidłowo, continue możesz wykorzystywać tylko w pętlach. Zamiast continue albo wyświetl treść wyjątku, albo np. zapisz do pliku.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 3 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Napisze po kolei: - 1 w configu, w wersji dev mam:
- 2 Jesli chodzi o continue, to rzeczywiście głupi błąd, z mojej strony, nie mniej nie pomogło mi w niczym jego usunięcie. - 3 Wolałbym obsługę zapisywać w bazie a nie w pliku choć przyznam, że pod niektórymi względami plik może bardziej nadawałby się do tego... - 4 Wyjątków nie chcę wyrzucać na ekran. Raportowane są tylko błędy "poważniejsze" np właśnie związane z DB i nie chce powiadamiać o nich, "zwykłych" userów. Natomiast napisałeś ~Noddi, że nieprawidłowo wyłapuję wyjątki, byłbym wdzięczny jeśli byś to rozwiną i zasugerował inne rozwiązanie. Z góry dzięki!! |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 25.12.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Błędu dopatrywałem właśnie w nie wyświetlaniu errorów, bo przy continue w bloku catch powinno wyświetlić error o nieprawidłowym zastosowaniu continue. Co do możliwości wyświetlania, zapisu do pliku/bazy danych to tylko i wyłącznie Twój wybór. Napisałem, że nieprawidłowo wyłapujesz wyjątki ze względu na umieszaczenie continue w catch.
PHP + Apache masz prawidłowo skonfigurowane, inne skrypty działają? Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 07:40 |