Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Høgskolen i Oslo Web-programmering Feilhåndtering i PHP.

Liknende presentasjoner


Presentasjon om: "Høgskolen i Oslo Web-programmering Feilhåndtering i PHP."— Utskrift av presentasjonen:

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(); }


Laste ned ppt "Høgskolen i Oslo Web-programmering Feilhåndtering i PHP."

Liknende presentasjoner


Annonser fra Google