CruellaDeVille Skrevet 25. mars 2007 Skrevet 25. mars 2007 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. ./
Peter Skrevet 26. mars 2007 Skrevet 26. mars 2007 (endret) *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 26. mars 2007 av Nazgul
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå