Avatar billede lakana Nybegynder
05. juli 2008 - 16:17 Der er 6 kommentarer og
1 løsning

throw new Exception()

Jeg vil høre om nogle vil give mig et eksempel på hvordan jeg 'kaster' en exception, og så hvordan min klasse, der skal håndtere dem skal se ud?

Jeg har prøvet at lave en klasse således:

class Exception {
    protected $message;

    public function __construct($message) {
        $this->message = $message;
    }

    public function __toString() {
        return $this->message;
    }
}

og så kaste en exception således:

try {
    if(file_exists($file)) {
        echo "filen eksisterer";
    }
    else
    {
        throw new Exception("Filen eksisterer ikke");
    }
}
Avatar billede lakana Nybegynder
05. juli 2008 - 17:13 #1
Jeg fandt http://dk.php.net/manual/en/function.set-exception-handler.php :-)

Men hvis jeg skriver følgende:

if($link = mysql_connect("..", "..", "..")) {
// ..
} else {
throw new Exception("..");
}

Så får jeg min 'exception' _udover_ PHPs egne fejlmeddelelser.
Avatar billede lakana Nybegynder
05. juli 2008 - 17:23 #2
og hvor finder man PHPs allerede oprettede klasser "ErrorException" og "Exception", og kan man 'catche' exceptions uden at lave sin egen funktion til dette? Bare udskrive ganske normalt.
Avatar billede dkfire Nybegynder
05. juli 2008 - 17:51 #3
Du bør kigge lidt her:
http://dk2.php.net/manual/en/language.exceptions.php

Der er nogle eksempler over hvordan man kalder og bruger exceptions.

For at undertrykke phps fejlbeskeder kan du bruge @ foran funktionen, eller du kan sætte niveauet for fejlbeskeder med error_reporting():
http://dk2.php.net/manual/en/function.error-reporting.php
Avatar billede punqtured Nybegynder
07. juli 2008 - 17:02 #4
Du kan bruge helt PHP5's helt egen Exception - der er ingen grund til at skrive din egen fra bunden.

Eksempel:


public function Test() {
  if (1 == 0) {
    throw new Exception("1 er ikke det samme som 0!");
  }
}

try {
  Test();
} catch (Exception $e) {
  print $e->getMessage());
}

Du afgør med andre ord selv, hvad du har lyst til at smide med som tekst i dine exceptions, og PHPs indbyggede exceptions har et par properties og metoder, der med fordel kan bruges som de er.

Hele fidusen med exceptions er jo, at lade det være op til front-end'en, hvad der skal vises til brugere og hvad der derudover skal ske. Det kan derfor være en fordel at have en try/catch konstruktion, der præsenterer noget læseligt for brugeren og gemmer noget brugbar information til dig selv - enten i en database eller fil, som man efterfølgende kan gennemgå, så man har mulighed for at udbedre eventuelle uhensigtsmæssigheder.

Ellers så er http://dk2.php.net/manual/en/class.exception.php, som der allerede er linket til også fuld af eksempler og forklaringer
Avatar billede punqtured Nybegynder
07. juli 2008 - 17:03 #5
Hov - det skulle naturligvis have været: if (1 != 0) :-D
Avatar billede lakana Nybegynder
09. juli 2008 - 23:35 #6
Jeg er godt klar over, at jeg bare kan bruge PHP's funktion, catch(), men jeg kaster jo mine exceptions i klasser, så jeg vil gerne kaste alle de jeg har brug for, og så håndtere disse i en anden klasse.
Avatar billede lakana Nybegynder
07. august 2011 - 20:38 #7
ellers tak ;o)
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