Gå til innhold

Bruk av exception php5


Anbefalte innlegg

Håkay, har sett litt på Exceptions i php5, men det er mye jeg ikke forstår.

 

Jeg har denne koden (snippet) for en db-klasse

PHP

public function __construct($h, $u, $p, $d){

$this->error_handler = new Error_handler();

if(!$con = @mysql_connect($h, $u, $p)){

throw new Exception("Host error: ".mysql_error());

}

if(!@mysql_select_db($d, $con)){

throw new Exception("Database error: ".mysql_error());

}

}

 

og denne koden for å bruke den

PHP

$db = null;

try{

$db = new db('localhost','user', 'pass','db');

}catch(Exception $e){

print $e->getMessage();

}

$number = $db->get_column("select count(*) from user");

if($db->is_error()){

$db->get_message();

}

Slik ville jeg gjort det i java iallfall, og første del fungerer fint.

Men - når jeg kommer til $number =....

sier parser at $db er et none-object, noe som kunne være tilfelle siden jeg sier at $db = null i linjen før jeg oppretter et db-objekt.

 

Det vil si at koden imn vet ingenting om hva som skjer i try-catch? Jeg trodde at hvis et objekt ble opprettet inni en try-catch var det fullt tilgjengelig hvis det gikk bra.

 

Hvor går det galt? I bøkene mine har de både try-catch og en throw i samme kodesnutt, noe som ser helt merkelig ut. ./

Lenke til kommentar
Videoannonse
Annonse
*snip*

8235770[/snapback]

I min kode så fikk jeg at $db var NULL dersom det ble kastet en exception i konstruktøren. Det er jo naturlig, ettersom konstruktøren returnerer objektet (automagisk), og den kjører jo ikke ferdig.

Dersom konstruktøren IKKE feiler, så er jeg ikke helt sikker. Da ville jeg vurdert å slenge inn litt var_dump( $db ) rundt omkring og sett hvordan ting så ut.

Endret av Nazgul
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...