Potlačení warningu a vyhazování výjimky u Mail a Image

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Honza Marek
Člen | 1664
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Ještě move_uploaded_file v HttpUploadedFile::move taky myslím házelo warning.

David Grudl
Nette Core | 8218
+
0
-

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
+
0
-

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…

David Grudl
Nette Core | 8218
+
0
-

fixed

Honza Marek
Člen | 1664
+
0
-

Díky, u toho HttpUploadedFile::move je warning schválně?