Toon posts:

Kan je errors ondervangen in php?

Pagina: 1
Acties:
  • 123 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik vroeg me af of er in php een soort van try..catch functie zit, zodat je een error kan afvangen en op je eigen manier kan afhandelen...

Dat kan toch met zoiets als:

doe_dit() or(print error)

??

Maar hoe vraag je de error dan weer op als je hem op je eigen manier wilt 'outputen'?

En kan je trouwens ook zelf een error opgooien? Ik weet dat je wel zelf een print-opdracht kan geven, maar in bijv. java kan je zoiets doe als 'throw new Exception("...")' Zodat het als een systeem-error gezien wordt >>> kan dit met php ook?

  • tomato
  • Registratie: November 1999
  • Niet online
Ik zie sommigen dit wel eens gebruiken:

mysql_connect(blablabla..) or die "Er is een fout opgetreden";

Maar die print dus gewoon een output en jij wilt zeker een functie aanroepen ofzo?

Verwijderd

Topicstarter
Wat ik wil doen is een php-systeem error custom op het scherm zetten.

Zoiets als dit:

Warning: File("templates/_home.tmpl") - No such file or directory in Template.php3 on line 14

Ik geloof dat je met cgi zoiets als dit kan doen:

doe_dit() or die($_);

de $_ vraagt dus de error op...


<edit>Ik wil dus niet m'n eigen error definieren, maar de systeem error netjes in een template flikkeren </edit>

  • TheDuke
  • Registratie: Juni 1999
  • Niet online
mysql_connect(blablabla..) or die "Er is een fout opgetreden";

dan wordt er weergegeven:
de php error
en de die error

als je een @ voor een php functie zet geeft deze een error message niet weer...
dus dan kun je

@mysql_connect() or die "gvd... een error";

Verwijderd

Topicstarter
Ok, maar dat is dus niet wat ik wil...
Ik wil een standaard functie schrijven die de system-error netjes middels een template-je wegschrijft

Dus als er een parse-errortje optreedt ik hem kan afvangen en hem in een nette, bij m'n site passende, layout op het scherm tover...

Het gaat er dus niet om dat ik m'n eigen error kan specificeren, maar m'n eigen layout.

Begraip? :)

  • tomato
  • Registratie: November 1999
  • Niet online
Hmm, kweet ook niet of dat kan, ik denk het niet eigenlijk. Hier loop je misschien wel tegen de onvolledigheden van PHP aan in vergelijking met hogere programmeertalen.
Maar wat voor soort errors zou je willen opvangen dan? Errors door foutieve PHP-syntax gaat iig niet, in geen enkele programmeertaal. Maar bijv fouten die optreden bij het behandelen van variabelen die verkeerde data bevatten, daar zou je wel zelf een soort check functie voor kunnen maken (moet eigenlijk zelfs).

Verwijderd

Topicstarter
Kon me nog herinneren dat ik me dit een hele tijd geleden afvroeg en ben er nu pas achtergekomen dat het wel mogelijk is...Boeiuh zullen er een paar misschien denken, maar ik vind het wel zo netjes om de evt php-errors netjes weer te geven...Staat zo slordig anders op je pagina...

Neemt niet weg dat je ervoor moet zorgen dat die errors niet moeten voorkomen, maar dat is een ander verhaal ;)

voor de geinteresseerden voor custom error handling:

http://php.net/manual/function.set-error-handler.php

Dit kan dan weer in combinatie met trigger_error gebruikt worden om ook je eigen errors op deze manier af te vangen

Wel geinig vond ik :)

Verwijderd

Topicstarter
Ah...zie net dat dit pas bij php4.01 erbij gekomen is...toen kon het dus idd niet |:(

  • WouZz
  • Registratie: Mei 2000
  • Niet online

WouZz

Elvis is alive!

Je kan via die ook een functie aanroepen hoor.. bijvoorbeeld:

mysql_connect(blabla) or die(een_of_andere_functie())

[update] Als je headers nog niet verstuurd zijn kan je zelf nog een server side redirect naar je errorpage doen..

mysql_connect(blabla) or die(header("Location:error.php?error=38"))

En dan aan de hand van die error een nette foutmelding geven...

On track


  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

error_reporting(63);
ergens bovenin smijten...
ik dacht laat ik maar helpen :)

Verwijderd

Topicstarter
klopt, maar hoe print je dan de gegenereerde php-error uit? Niet dus...

Ik bedoel dus de error die php zelf genereert...(had je ook kunnen lezen als je de thread helemaal gelezen had) Je kan natuurlijk altijd een eigen error genereren, maar het voordeel van bovenstaande oplossing is, dat je zelf geen extra code hoeft toe te voegen...Je definieert je eigen error-afhandelings-routine en klaar

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

error_reporting print zelf gewoon de error uit op de plek waar de error voorkomt, hoef je dus niets extra's te doen
dus alleen de regel toevoegen en klaar ben je

edit:
Als je in de php help kijkt bij error_reporting kan je ook gewoon aangeven wat en hoe ;)

Verwijderd

Topicstarter
het enige wat error_reporting doet is aangeven wat voor soort errors geprint moeten worden...

Lees ff wat ik bedoel, het gaat erom dat je een error netjes in je eigen layout afvangt...dmv een templateje bv...

Zie dat maar eens met error_reporting voor mekaar te krijgen

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05-2025

GX

Nee.

ik zal wat proberen als ik thuis ben :)
anders zoek ik nog wel een andere oplossing, maar ik kan nu niet gaan scripten :(
als ik wat heb laati k je het wel horen :D

Verwijderd

Topicstarter
hallo wakker worden....;)

Ik póst juist de oplossing....Wel ff lezen voordat je ergens op reageert hè |:(
Pagina: 1