php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 02-11-2006, 21:06
dibsi
 Newbie
Links : Onlinestatus : dibsi ist offline
Registriert seit: Jul 2006
Beiträge: 9
dibsi ist zur Zeit noch ein unbeschriebenes Blatt
Standard Uncaught Exception

Hallo !
Ich probiere gerade ein bisschen mit Exceptions herum und habe ein Problem damit, bitte schauts euch mal das an.
PHP-Code:
<?php
function showError($exception) {    
        if(!
is_object($exception)) {
            throw new 
BgException(
'<i>'.__FUNCTION__.'()</i> in '.__FILE__.' hat einen falschen Datentyp bekommen.');
        }
        try {
            
$errorMsg 'Testnachricht';
            
?>
            <table>
             <tr>
              <td>Fehler vom Typ 
<i><?php echo $exception->getTyp(); ?></i></td>
             </tr>
             <tr>
              <td><?php echo $errorMsg?></td>
             </tr>
            </table>
            <?php
        
}
        catch (
BgException $BgException) {
                
trigger_error($BgException->getMessage(), E_ERROR);
        }
    }
Mit Zitat antworten
  #2 (permalink)  
Alt 02-11-2006, 21:11
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

bitte lauffähigen code zeigen, damit der zusammenhang deutlich wird, wie du die funktion benutzst.
Mit Zitat antworten
  #3 (permalink)  
Alt 02-11-2006, 22:48
dibsi
 Newbie
Links : Onlinestatus : dibsi ist offline
Registriert seit: Jul 2006
Beiträge: 9
dibsi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, sorry.
PHP-Code:
<?php
    
class BgException extends Exception {
        protected 
$errorTyp;
        protected 
$errorLevel;
        
        public function 
__construct($errorLevel$errorMsg 'Keine Nachricht gegeben'
$errorCode 0$errorTyp 'Allgemein') {
            
parent::__construct($errorMsg$errorCode);
            
$this->errorTyp $errorTyp;
            
$this->errorLevel $errorLevel;
        }
        public final function 
getTyp() {
            return 
$this->errorTyp;
        }
        public final function 
getLevel() {
            return 
$this->errorLevel;
        }
    }
?>
Die Funktion soll mir einfach nur den Fehler schön geordnet in einer Tabelle anzeigen. Wenn der Funktion ein Objekt übergeben wird, alles OK, sonst soll es zum Fehler kommen.
PHP-Code:
<?php
public function login($user$passwort) {
            
// Überprüfung, ob Daten Stimmen
            
if($this->loggedIn) {
                
// Session eintragen
            
}else{
                throw new 
LoginException(1'Login fehlgeschlagen.'1,
 
'Login');
            }
        }        
//...
//...
//...
try {
        
$user = new User();
        
$user->login('Test''test');
    }catch (
LoginException $LoginException) {
        
showError($LoginException);
    }
?>
Mit Zitat antworten
  #4 (permalink)  
Alt 02-11-2006, 22:54
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

...gut, und jetzt noch eine klare problembeschreibung (samt fehlermeldungen).
Mit Zitat antworten
  #5 (permalink)  
Alt 02-11-2006, 22:57
dibsi
 Newbie
Links : Onlinestatus : dibsi ist offline
Registriert seit: Jul 2006
Beiträge: 9
dibsi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Tut, mir leid:
Die Fatal error: Uncaught exception 'BgException'
EDIT:
Fatal error: Uncaught exception 'BgException'...
Mit Zitat antworten
  #6 (permalink)  
Alt 02-11-2006, 23:00
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Uncaught Exception

Zitat:
Original geschrieben von dibsi
Ich probiere gerade ein bisschen mit Exceptions herum und habe ein Problem damit, bitte schauts euch mal das an.
exceptions, die innerhalb des try-blocks geworfen werden, werden im passenden catch-block abgefangen.
in deiner funktion ist dies nicht der fall, du wirfst eine exception außerhalb von try und die wird nicht durch catch abgefangen: "Uncaught exception"
Mit Zitat antworten
  #7 (permalink)  
Alt 03-11-2006, 00:11
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: Uncaught Exception

Zitat:
Original geschrieben von dibsi
PHP-Code:
if(!is_object($exception)) 
wenn du schon den parameter auf 'object' überprüfst, dann richtig. du erwartest schließlich ein exception object:
PHP-Code:
if(!$exception instanceof Exception
Mit Zitat antworten
  #8 (permalink)  
Alt 03-11-2006, 01:27
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

3DMax, eigentlich soll die exception (wenn ich das richtig verstehe) nach außen gereicht werden und erst dann fatal error produzieren, wenn sie auf der obersten ebene nicht abgefangen wird. so würde ich das z.b. von java erwarten.. leider fehlt mir momentan die möglichkeit, einen testlauf zu starten.

http://de.php.net/manual/en/language...ions.php#52612 - kommentar von "jd at wuputah dot com".

Geändert von penizillin (03-11-2006 um 01:38 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 03-11-2006, 01:31
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dibsi: versuch doch mal, mit ...catch(Exception $e)... eine allgemeine exception abzufangen, vielleicht lässt sich dich etwas wissen.

im grunde kann 3dmax jedoch recht haben - die exception bgexception (die besagen soll: parameter von falschem typ) wird bei dir nirgendwo gefangen...

Geändert von penizillin (03-11-2006 um 01:40 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 03-11-2006, 03:51
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von penizillin die exception bgexception (die besagen soll: parameter von falschem typ) wird bei dir nirgendwo gefangen...
mein reden
aber ich finde den ansatz von dibsi schon komisch - es wird eine exception gefangen und dann explizit die funktion showError() mit dem exception object aufgerufen.
diese funktion prüft dann, ob der parameter ein objekt ist und schmeißt dann eventuell wieder eine exception (die bekanntlich nicht gefangen wird). warum der umweg über diese funktion und nicht gleich die exception fangen, direkt im script oder alles andere außerhalb?

PHP-Code:
try
 {
  
// Ganz viele Zeilen Script
  // Spezielle Ausnahmen können hier abgefangen werden, z.B.:
  
try
   {
    
$user->login('user''pass')
   }
  catch(
LoginException $le)
   {
    
$user->showLoginForm($le->getMessage());
   }
 }
catch(
Exception $e)
 {
  
// Alle unbehandelte Ausnahmen werden hier gefangen
  
echo $e->__toString();
 } 
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
PG Job Site Pro

> Job Site Pro - web-basiertes Programm, auf PHP/MySQL für Erstellung der funktionellen Job Board Site gebaut. Das hat erweitertes Management-System für Arbeitssuchenden und Arbeitgeber und kann für bestimmte Länder, Regionen oder einfach generelle Job Si

05.02.2019 submit@ | Kategorie: PHP/ Management
ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:28 Uhr.