Avatar billede riversen Nybegynder
13. juni 2003 - 17:19 Der er 17 kommentarer og
2 løsninger

Håndtering af fejl

fx hvis jeg prøver at inkludere en fil som ikke eksisterer får jeg følgende fejl:

Warning: Failed opening 'fil.txt' for inclusion (include_path='.;c:\php4\pear') in fil.php on line 1290

I java, som jeg jo kender lidt til, kan man lave try catch blokke, hvor catch bliver udført hvis der sker en fejl. Er der ikke noget lignende i php?

Der er vist også noget med man kan sætte på hvilket niveau fejl skal meldes. altså alt efter typen. Dette kan vel sættes i php.ini? hvor? og kan man også gøre det individuelt for hver php fil?
Avatar billede riversen Nybegynder
13. juni 2003 - 17:21 #1
error_reporting  = det var vist her i php.ini :-)
Avatar billede schaefner Juniormester
13. juni 2003 - 17:21 #2
Du burde også kunne sætte et @ foran funktionen. F.eks.:
@include('fil.txt');
Avatar billede riversen Nybegynder
13. juni 2003 - 17:22 #3
hvad får jeg ud af det?
Avatar billede schaefner Juniormester
13. juni 2003 - 17:23 #4
at den ikke udskriver fejlbeskeden.
Avatar billede Slettet bruger
13. juni 2003 - 17:24 #5
Der er ikke exceptions i PHP (kommer i PHP 5).

Nu ved jeg ikke, hvad det er, du gerne vil. Men altså, der er forskellige muligheder. Hvis du vil undertrykke fejl for en enkelt funktion kan du sætte @ foran funktionen som:

@include("side_der_ikke_eksisterer.php");

(burde virke selvom include() ikke er en rigtig funktion)

Du kan sætte det generelle niveau for fejlrapportering med:

error_reporting() http://www.php.net/manual/en/function.error-reporting.php

eg. error_reporting(E_ERROR) for kun at rapportere fejl osv.
Avatar billede riversen Nybegynder
13. juni 2003 - 17:26 #6
men hvis jeg nu gerne vil håndtere fejlen?
Avatar billede riversen Nybegynder
13. juni 2003 - 17:27 #7
include returnerer så vidt jeg kan konstatere ingenting, så jeg kan ikke engang lave noget if halløj
Avatar billede Slettet bruger
13. juni 2003 - 17:29 #8
if (file_exsists($include_file))
    include($include_file);
else
    echo "Do stuff";

Ellers skal du implementere din egen fejlhåndtering. Se mere på:
http://dk.php.net/set_error_handler
Avatar billede riversen Nybegynder
13. juni 2003 - 17:30 #9
ok, der er altså ikke nogen måde at fejlhåndtere på uden selv at tjekke i hoved og bip
Avatar billede Slettet bruger
13. juni 2003 - 17:31 #10
Avatar billede riversen Nybegynder
13. juni 2003 - 17:52 #11
så vidt jeg kan se er det eneste man får ud af det en generel selvvalgt tekst og ikke en egentlig håndtering, men det er muligt jeg ikke har læst det ordentligt
Avatar billede Slettet bruger
13. juni 2003 - 17:53 #12
Det sidste.
Avatar billede riversen Nybegynder
13. juni 2003 - 17:55 #13
ja, så jeg også lige :-)
Avatar billede riversen Nybegynder
13. juni 2003 - 17:57 #14
læg bare et svar
Avatar billede Slettet bruger
13. juni 2003 - 18:26 #15
Ok.
Avatar billede fangel Nybegynder
13. juni 2003 - 19:10 #16
hvis scriptet behøver denne fil, så brug require() da denne funktion laver faltal fejl ved fejl, derved stopper resten af scriptet!

du kan så gøre (opsumering + lidt nyt) følgende:
* smide et @ foran linien, så fejl bliver ignoret
* ændre i error_reporting så fejlen ikke bliver rapporteret
* lave eftet outputbuffering / error-reporting system, så fejl bliver skrevet pænt

jeg vil anbefale punkt 3, og jeg yder gerne hjælp... send en mail til mig hvis du skal have det

mfa @ desi-dev.dk (nej, jeg vil ikke have spam)

Morten
Avatar billede tipsen Nybegynder
13. juni 2003 - 21:41 #17
Jeg har selv brugt en del tid på at undersøge, hvilke muligheder der er i forb. med error-handling og har et par links du kunne finde brugbare:

http://www.devshed.com/Server_Side/PHP/ErrorHandling/ErrorHandling1/page1.html
http://www.devshed.com/Server_Side/PHP/ErrorHandling/ErrorHandling2/page1.html
http://www.zend.com/zend/spotlight/code-gallery-wade9.php

Man kan faktisk lave flere "tricks" end de fleste tror, men som mercur rigtigt nok skriver, må man vente til PHP5 på at få "rigtig" fejlhåndtering!
Avatar billede riversen Nybegynder
14. juni 2003 - 07:38 #18
dea_pg: det gør jeg måske
Avatar billede fangel Nybegynder
14. juni 2003 - 13:44 #19
bare velkomme til ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester