Laste ned presentasjonen
Presentasjon lastes. Vennligst vent
PublisertBaard Hermansen Endret for 9 år siden
1
Høgskolen i Oslo Web-programmering Feilhåndtering i PHP
2
I dag l Feilhåndtering i PHP l Bruke dette videre i faget l Gjennomgang av kode. l Oppgaveløsning –Oblig 1 leveres 6. mars l Ingen lab på torsdag (næringslivsdag) l Ingen forelesning neste uke (undervisningsfri) l Lab går som vanlig neste uke.
3
Feilhåndtering i PHP l I en ”ordentlig” web-applikasjon må alle feil håndteres av programmet l Ingen feil skal skrives ut av php –Warning : fopen(logg.txt) : failed to open stream… l Ingen feil skal gjøre at programmet stopper l Feilmeldinger skal vises til brukeren slik at de kan forstå feilen l Videre bør feil ”logges” til fil –Administrator kan så se alle feil i produksjon
4
l Warning : fant ikke filen som skulle skrives til. l Ikke brukervennlig!
5
Første steg: Test på feilsituasjoner der du kan! l Mange PHP funksjoner returnerer verdier (som oftest true/false) avhengig om det gikk ok eller ikke. l Dersom disse returverdier ikke testes på skrives det ut en warning i nettleseren l Dette ønsker vi ikke l Test derfor på retur av PHP funksjoner der det er mulig (f.eks ved filhåndtering).
6
l Teste der det er mulig!
7
Andre steg : å logge feil l I reelle driftssituasjoner med mange brukere l Administrator må vite om feil i systemet l Feilene må ikke bare gå til brukerne l Kan bruke en PHP funksjon : –error_log(”Feilmelding”,3,”Logg.txt”); –2. parameter: »1 : Sendes til mailadresse (forsiktig: kan føre til mange mail) »3 : Sendes til fil
8
l Logger feil til fil i tillegg til å skrive ut melding til bruker
9
Tredje steg: Ikke vis feil l Det er ingen garanti for at du har skrevet inn tester der for det er behov for det. l For å unngå systemmeldinger til bruker: –error_reporting(0); eller E_ALL, E_ERROR etc. –Med 0 : Ingen warning vil bli vist bruker uansett! l Må ha en generell mekanisme for å fange opp feil (warnings) som programmet ikke tester på
10
Tredje step fort: l En generell php funksjon sikrer dette –set_error_handler(funksjonsnavn,E_TYPE); –funksjonsnavnet angir en funksjon som utføres ved ulike typer feil (skrevet av deg) –E_TYPE = E_ALL|E_ERROR|E_WARNING|E_USER_ERROR l Inne i funksjonen som er angitt i error handler –Bygg en meldning og skriv denne til fil
11
Set_error_handler l $errno = feilnummer fra systemet l $errstr = feilmeldingen l $errfile = filen som genererte feilen l $errline = linjenummeret som feilen oppstod i
12
Fjerde steg : Fatale feil l Fatal errors stopper hele kjøringen av en fil l Også disse bør brukeren forskånes for l Også disse feilene bør logges til en fil l I tillegg bør brukeren dirigeres til en ”feilside” hvor det vises en brukervennlig melding –Som forklarer at applikasjonen har stoppet, feilen er logget og at brukeren må starte på nytt.
13
Mål at ingen slike meldinger skal oppleves av brukeren i ”produksjon”
14
For å håndtere fatale feil l Egen php funksjon som utføres før scriptet avsluttes: –Register_shutdown_function(avsluttFunksjon) –Parameteren avsluttFunksjon (NB ingen ” ” her!) angir hvilken egendefinerte funksjon som skal kalles ved fatale feil
15
Shutdown function l Funksjonen henter siste feilmelding (error_get_last) l Bygger en melding med et linjeskift ($message) l Skriver til logg fil (error_log) l Går til en ny side som viser en brukervennlig feilmelding (header(”Location:url”))
16
Try, throw, catch l Er ikke spesielt nyttig da man må eksplisitt kaste (throw) alle feil og fatale feil håndteres ikke. try { $filhandler = fopen("test.txt","r"); if($filhandler==NULL) throw new Exception; } catch (Exception $e) { echo "Feil".$e->getMessage(); }
Liknende presentasjoner
© 2024 SlidePlayer.no Inc.
All rights reserved.