Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mpdf] tłumienie wyjątków
Forum PHP.pl > Forum > PHP
NorthPole
Witam
mam problem z przechwytywaniem wyjątków tej klasy. Robię tak:

  1. try {
  2. $mpdf=new mPDF('pl');
  3. $mpdf->WriteHTML($stylesheet, 1);
  4. $mpdf->WriteHTML($htmlBody, 2);
  5. $mpdf->Output($pdfFilename,'F');
  6. unset($mpdf);
  7. }
  8. catch (Exception $e) {
  9. // zapis logu o błędzie
  10. }


dodatkowo mam wyłączone raportowanie błędów php.
Jeśli wymuszę błąd np podając złą ścieżkę dla generowanego pliku to dostaje przecudny komunikat o błędzie którego chciałbym uniknąć i skrypt się zatrzymuje.

Macie jakiś pomysł?

Pozdrawiam
mls
Nie będzie to może odpowiedź, ale...
błędów należy unikać zamiast ukrywać...

Naprawdę, nie wiem na czym polega problem ze sprawdzeniem w pierwszej kolejności czy podana ścieżka jest poprawna.
NorthPole
dziękuję Ci za szybką odpowiedź. Faktycznie nie pomogłeś mi tym co napisałeś ale szanuję to że zechciałeś coś napisać.
Cytat(mls @ 17.01.2010, 16:47:33 ) *
błędów należy unikać zamiast ukrywać...

jasne, pod warunkiem że zależą one od Ciebie. Są jednak sytuacje niezależne i na takie chciałem zabezpieczyć skrypt (po to stworzono strukturę do przechwytywania wyjątków try-catch).

Tak jak pisałem błąd sztucznie wymuszam podając złą ścieżkę.

Dodam jeszcze że aplikacja działa na Zend Framework.

Jakieś pomysły?
darko
Sorry, ale nawet jak już pobrałem 17 Mb (exclamation.gif) źródeł to zniechęciło mnie wertowanie skryptu, który ma ponad 25 tys linii kodu. Najlepiej, jakbyś sam przejrzał kod tej klasy i przeanalizował jej obsługę błędów i ewentualnie - jeśli licencja na to pozwala - zmodyfikował tę obsługę błędów.
Dodam, że ZF ma własną obsługę wyjątków Zend_Exception
NorthPole
oj, oj widzę żeście się chłopaki w to niedzielne popołudnie rozkręcili z radami :-)

klasa do generowania pdf-ów faktycznie spora ale wybrałem ją m.in. dlatego że ktoś na tym forum ją zachwalał/polecał. Nie powiem jest przyjemna w użyciu i domyślam się że wielu użytkowników z niej korzysta.

Jeśli ktoś spotkał się z podobnym problemem do mojego to proszę o radę.

mls
Cóż. Możesz próbować przechwycić błąd poprzez własną funkcję obsługującą błędy, ale wtedy błędu FATAL ERROR nie obsłużysz i tak. Klasa, z tego co na pierwszy rzut oka widzę, nie obsługuje wyjątków, więc zapomnij o try i catch. Jedyne co przyszło mi do głowy w tym momencie to ALBO wyciszenie błędu poprzez dodanie znaku "@" w linijce z $mpdf->Output($pdfFilename,'F');, ALBO przypisanie wygenerowanego źródła PDF do zmiennej ($output = $mpdf->Output(null, 'S');) i samodzielny zapis tego źródła do pliku standardowymi funkcjami php (kiedy to łatwo można wychwycić błąd zapisu).

Zastanawia mnie tylko dlaczego zdecydowałeś się na zastosowanie tej "kobyły" (17 MB), szczególnie korzystając z ZF, jeśli ZF ma wbudowane klasy do generowania plików PDF...
NorthPole
Poradziłem sobie z tym rozszerzając klasę i nadpisując metodę Error()
  1. function Error($msg) {
  2. throw new ErrorException($msg);
  3. }

myślałem że można sterować wywalaniem błędów zmiennymi konfiguracyjnymi, co było by najbardziej eleganckie.
Dlaczego nie zastosowałem wbudowanej w ZF klasy? Niestety wersja ZF która dział na serwerze jest mocno okrojona. Boję się robić update i dlatego ta proteza. Docelowo jak będzie planowana większa modernizacja pewnie skorzystam z Zend_Pdf.
Dzięki za zainteresowanie.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.