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

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

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:05 Uhr.