01. marts 2005 - 23:27Der er
13 kommentarer og 1 løsning
try and catch(exception) i PHP5
Jeg har lavet en funktion med try og catch, men den vil gå ned i catch (eksempelvis hvis der ikke er nogle database forbindelse) går den ikke ned i catch (er det ikke det der er meningen, hvis try blokken ikke lykkes gå ned i catch, her er min kode:
function createCustomer($customer) { try { global $connect; pg_query("begin");
$selectTest = pg_query("select * from customer where \"vatNo\" = '$customer->vat'"); $row=pg_fetch_row($selectTest); if($row[4]>=1) { return -1; } else {
$test = pg_query("insert into customer values ('$customer->name', '$customer->adr', '$customer->post', '$customer->vat')"); $oid = pg_getlastoid($test); $query_for_id = "SELECT * FROM customer WHERE oid=$oid;"; $result = pg_query($query_for_id); $arr = pg_fetch_row($result); pg_query( "commit"); pg_close($connect);
return $arr[4]; throw new Exception("En exception blev kastet");
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Try/Catch virker kun ved exceptions - Hvis du vil bruge exceptions skal du bruge en database-wrapper som smider en exception hvis der f.eks. ikke er en gyldig databaseforbindelse...
Det der er meningen er at, hvis der ikke er forbindelse til databasen skal den returnere -3, hvis der er forbindelse til database og den bare ikke kan oprette objektet skal den returnere -2. Det er noget i den stil. Jeg har før leget med javakode og ville gerne have den til at virke som denne her javakode //Fejl meddelelser: -1 hvis der er fejl til forbindelse til db, -2 hvis bruger ikke existerer public synchronized int OpretPerson(Person person) { Connection con = getConnection(); if(person.getBrugernavn().equals("")) return -2; try { Statement s = con.createStatement ( ); ResultSet b=s.executeQuery("select PersonId from Person where BrugerNavn='" + person.getBrugernavn() + "'"); if(b.first()) { return -2; } s=con.createStatement(); String insertPerson = "INSERT INTO Person (Navn, Adresse, PostNrF, TlfNr, MobilNr, Email, BrugerNavn, Password, BrugerNiveau) VALUES('" + person.getNavn() + "','" + person.getAdresse() + "','" + person.getPostnr() + "','" + person.getTelefonnummer() + "','" + person.getMobil() + "','" + person.getEmail() + "','" + person.getBrugernavn() + "','" + person.getPassword() + "'," + person.getBrugerniveau() + ")"; s.execute ( insertPerson ); int personId=getLastId(s); close(con); return personId; } catch ( java.sql.SQLException e ){ System.out.println("AAAHhhh.. pis"); System.out.println(e); return -1; } }
alaflam, Det er rimelig fucked i PHP5 - De fleste ting raiser ikke exceptions, de laver errors, så du kan ikke bryge try/catch, hvilket er lidt latterligt... Men jo, det er da fedt at det er kommet, så må vi bare håbe at de fixer det ;P
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.