Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mpdf] tłumienie wyjątków
NorthPole
post
Post #1





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 20.02.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
mls
post
Post #2





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował mls 17.01.2010, 16:48:59


--------------------
Go to the top of the page
+Quote Post
NorthPole
post
Post #3





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 20.02.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
NorthPole
post
Post #5





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 20.02.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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ę.

Go to the top of the page
+Quote Post
mls
post
Post #6





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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...

Ten post edytował mls 18.01.2010, 01:27:04


--------------------
Go to the top of the page
+Quote Post
NorthPole
post
Post #7





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 20.02.2007
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 07:33