1 / 16

Web-programmering

Web-programmering. Feilhåndtering i PHP. I dag. Feilhåndtering i PHP Bruke dette videre i faget Gjennomgang av kode. Oppgaveløsning Oblig 1 leveres 6. mars Ingen lab på torsdag (næringslivsdag) Ingen forelesning neste uke (undervisningsfri) Lab går som vanlig neste uke.

ahanu
Download Presentation

Web-programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Web-programmering Feilhåndtering i PHP

  2. I dag • Feilhåndtering i PHP • Bruke dette videre i faget • Gjennomgang av kode. • Oppgaveløsning • Oblig 1 leveres 6. mars • Ingen lab på torsdag (næringslivsdag) • Ingen forelesning neste uke (undervisningsfri) • Lab går som vanlig neste uke.

  3. Feilhåndtering i PHP • I en ”ordentlig” web-applikasjon må alle feil håndteres av programmet • Ingen feil skal skrives ut av php • Warning : fopen(logg.txt) : failed to openstream… • Ingen feil skal gjøre at programmet stopper • Feilmeldinger skal vises til brukeren slik at de kan forstå feilen • Videre bør feil ”logges” til fil • Administrator kan så se alle feil i produksjon

  4. Warning : fant ikke filen som skulle skrives til. • Ikke brukervennlig!

  5. Første steg: Test på feilsituasjoner der du kan! • Mange PHP funksjoner returnerer verdier (som oftest true/false) avhengig om det gikk ok eller ikke. • Dersom disse returverdier ikke testes på skrives det ut en warning i nettleseren • Dette ønsker vi ikke • Test derfor på retur av PHP funksjoner der det er mulig (f.eks ved filhåndtering).

  6. Teste der det er mulig!

  7. Andre steg : å logge feil • I reelle driftssituasjoner med mange brukere • Administrator må vite om feil i systemet • Feilene må ikke bare gå til brukerne • 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. Logger feil til fil i tillegg til å skrive ut melding til bruker

  9. Tredje steg: Ikke vis feil • Det er ingen garanti for at du har skrevet inn tester der for det er behov for det. • For å unngå systemmeldinger til bruker: • error_reporting(0); eller E_ALL, E_ERROR etc. • Med 0 : Ingen warning vil bli vist bruker uansett! • Må ha en generell mekanisme for å fange opp feil (warnings) som programmet ikke tester på

  10. Tredje step fort: • 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 • Inne i funksjonen som er angitt i error handler • Bygg en meldning og skriv denne til fil

  11. Set_error_handler • $errno = feilnummer fra systemet • $errstr = feilmeldingen • $errfile = filen som genererte feilen • $errline = linjenummeret som feilen oppstod i

  12. Fjerde steg : Fatale feil • Fatal errors stopper hele kjøringen av en fil • Også disse bør brukeren forskånes for • Også disse feilene bør logges til en fil • 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 • 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. Shutdownfunction • Funksjonen henter siste feilmelding (error_get_last) • Bygger en melding med et linjeskift ($message) • Skriver til logg fil(error_log) • Går til en ny side som viser en brukervennlig feilmelding (header(”Location:url”))

  16. Try, throw, catch • 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) thrownewException; } catch (Exception $e) { echo "Feil".$e->getMessage(); }

More Related