zpracování chyby pomoci try a catch

vlkodlak
Člen | 160
+
0
-

Zdravím,
Řeším, jednoduchou věc, ale nejsem schopen pochopit co je špatně …. Ano mohl bych předtím provést test zda takový soubor existuje a nepoužit zachycení výjimky / chyby.

Očekávání: zjednodušeně, pošlu na funkci parametr, dle kterého chci načíst soubor JSON a pokud neexistuje vrátím, místo chyby, prázdnou hodnotu.

Zatím mi to konči v ladence, že soubor nenalezen.

function nacti($aSoubor){
	try{
		$obsah = json_decode( file_get_contents( $aSoubor), true);
	}catch(Exeption $e){
		$obsah ="";
	}
	return $obsah;
}
Marek Bartoš
Nette Blogger | 1177
+
+8
-
  • Exception, ne Exeption
  • Jestli jsi v namespace, tak ti nejspíš chybí use statement (viz https://www.php.net/…es.rules.php)
  • Chytej přesně tu chybu, kterou ti to vyhazuje a ne obecnou Exception. Též PHP částo vyhazuje Error, ne Exception (jejich společný interface je Throwable)
  • Pořiď si nějaký editor, co tě na to upozorní (phpstorm)

Editoval Marek Bartoš (30. 4. 2023 0:48)

nightfish
Člen | 474
+
+3
-

A já ještě přidám:

  • file_get_contents při chybě vrací false a nevyhazuje výjimku, takže to je ideálně stav, který chceš také ošetřit, protože vstupem json_decode má být string
vlkodlak
Člen | 160
+
0
-

nightfish napsal(a):

A já ještě přidám:

  • file_get_contents při chybě vrací false a nevyhazuje výjimku, takže to je ideálně stav, který chceš také ošetřit, protože vstupem json_decode má být string

děkují, to vysvětluje marnou „agonii“ mého snažení ;-)