Potlačení warningu a vyhazování výjimky u Mail a Image
- Honza Marek
- Člen | 1664
Docela bych ocenil, pokud by ve frameworku nedocházelo k vypisování warningů, ale k vyhazování výjimek.
Příklady:
Nette\Image
Chci udělat zmenšeninu obrázku a nějak reagovat v případě nenalezení obrázku.
try {
@Image::fromFile($this->baseFolderPath . "/" . $key)->resize(60, 40)->send();
} catch (Exception $e) {
Image::fromString(Image::EMPTY_GIF)->send(Image::GIF);
}
Zde sice dojde k vyhození výjimky, ale musím ozavináčovat Image::fromFile, aby mi případný warning nedělal bordel.
Nette\Mail
Chci vědět, jestli se mail poslal nebo ne.
try {
$mail = new Mail;
...
if (@$mail->send()) {
// ok
} else {
throw new Exception;
}
} catch (Exception $e) {
// reakce na chybu
}
Zde musím vyrobit takhle komplikovanou konstrukci, protože $mail->send() taky může vyhodit výjimku, třeba když je špatně nastavený odesilatel (E-mail '' is not valid.). Navíc to musím také zavináčovat, kvůli případnému warningu funkce mail.
// edit: příklad s mailem asi není nejšťastnější, protože výjimku o špatném odesilateli vyhazuje metoda addTo, což je správně.
Editoval Honza M. (16. 6. 2009 15:33)
- David Grudl
- Nette Core | 8218
To vypisování warningů samozřejmě není záměr. Spíš by se mi hodila informace, která PHP funkce to konkrétně dělá, abych ji mohl umlčet.
ps.
Image::fromString(Image::EMPTY_GIF)->send(Image::GIF);
lze nahradit za
echo Image::GIF;
ale pravda, ještě to chce poslat content-type…
- Honza Marek
- Člen | 1664
Fajn :) Dělají to funkce getimagesize v Image::fromFile a mail v tom posílání mailů. Kdybych přišel ještě někde jinde na nějaký warning, tak dám zase vědět.
- Honza Marek
- Člen | 1664
Ještě move_uploaded_file v HttpUploadedFile::move taky myslím házelo warning.
- David Grudl
- Nette Core | 8218
U funkce mail() ale potlačit chybové hlášky asi nebude to pravé ořechové. Proč to vlastně háže warningy?
- Honza Marek
- Člen | 1664
Na localhostu to háže warningy, jelikož to nemám na windows nastavené a ani nevim, jestli to nastavit jde. No u mailu bych nejradši viděl výjimku, že se to nepovedlo odeslat třeba s textem toho warningu…