r.nahm
Goto Top

PHP Exception arbeitet nicht korrekt ?!?

Hallo Admins,

habe eine Klasse in der sich seltsames abspielt.

habe eine AuthException Klasse welche bei einem Aufruf aus der Klasse XYZ folgendes Resultat bringt: $e->getMessage() == null
rufe ich die AuthException aus dem namespace / auf funktioniert alles wunderbar. Method-Call ist korrekt nur hängt es irgendwie bei der message Variable.

EDIT: das wirklich skurile ist, die ausgabe von $e->getCode(); läuft in beiden fällen korrekt ab... also code wird immer übernommen.

EDIT2: Exceptions werden bei mir folgendermaßen abgefangen:

<?php
	function ExceptionHandler($e)
	{
		global $output;
		if((get_class($e) == "OAuthResponse") OR (get_class($e) == "Response"))  
		{
			$output->set($e->getData(), $e->getHeader());
		}else{
			$output->set(array("error" => array(  
						"message" 	=> $e->getMessage(),  
						"type"		=> get_class($e),  
						"code"		=> $e->getCode())));  
		}
		$output->close();
	}
	set_exception_handler("ExceptionHandler");  

?>

EDIT3: selbes spiel bei einer normalen Exception (standard).

wer weis was da los is?

LG
Richi

EDIT: kommentare sind aktueller als das hier....


ES SIND DIE UMLAUTE!!!! wer kann helfen? :D

Content-Key: 224567

Url: https://administrator.de/contentid/224567

Ausgedruckt am: 30.03.2024 um 02:03 Uhr

Mitglied: r.nahm
r.nahm 15.12.2013 um 18:19:07 Uhr
Goto Top
Zum besseren Verständnis, mehr code:

	$classes = array(
		'Output' => '/Output.php',  
		'AuthException' => '/AuthException.php',  
		'ExceptionHandler' => '/ExceptionHandler.php',  
		
		...

	);

	foreach($classes as $key => $value){
		require_once($libDir . $value);
	}
	$output = new Output();

$server = new AuthServer();

Class AuthServer extends AuthCommon
{

	function __construct()
	{
		return $this->handleRequest();
	}

	public function handleRequest()
	{

		if(!isset($f['signature']))  
		{
			throw new Exception("Anfrage enthält keine Signatur.", 123);  
		}

	}
</php>
Mitglied: r.nahm
r.nahm 15.12.2013 um 18:21:46 Uhr
Goto Top
$output gibt dann folgendes aus
{"error":{"message":null,"type":"Exception","code":123}}  
Mitglied: r.nahm
r.nahm 15.12.2013 um 18:57:47 Uhr
Goto Top
Okay sorry,
alles Bullshit da oben:

die Exceptions lassen sich generell schonmal aus der AuthCommon Klasse aus werfen.

wenn ich über /index.php die /inc/init.php lade läuft alles.

hole ich mir die selbe /inc/init.php aus /auth/index.php heraus dann spackt $e->message() herum und ich weiß nicht woran es liegen könnte...

/index.php:
<?php
	require_once("inc/init.php");  
//	throw new Response(array('test' => 'response'), array('X-Debug' => 'it works')); 
	$auth = new AuthCommon();
	$auth->setParam(array('test' => 'abcd', 'test2' => '1234'));  
	$auth->setSignatureMethod('none');  
	//print_r($auth);
?>

/auth/index.php:
<?
require_once('../inc/init.php');  
$server = new AuthServer();

	throw new AuthException('Anfrage enthält keine Signatur.', 123);  
$server->setConsumer(md5('1234567880'), md5('abcdefghi'));  
print_r($server->request);
?>

jetzt weis ich noch weniger woran was wie und wo liegen könnte...

face-confused *needhelp*
Mitglied: r.nahm
r.nahm 15.12.2013 um 19:02:25 Uhr
Goto Top
	// set_exception_handler("ExceptionHandler"); 
verrät mir dass irgendetwas mit dem Handler nicht läuft...da die ausgabe ohne Handler folgende ist:

Fatal error: Uncaught exception 'AuthException' with message 'Anfrage enthält keine Signatur.' in ***/httpdocs/auth/index.php:5 Stack trace: #0 {main} thrown in ***/httpdocs/auth/index.php on line 5   

Siehe da, $msg ist da...
Mitglied: r.nahm
r.nahm 15.12.2013 um 19:04:52 Uhr
Goto Top
selbes spiel bei einem Wurf aus der Klasse heraus:
Fatal error: Uncaught exception 'AuthException' with message 'Anfrage enthält keine Signatur.' in ***/httpdocs/library/AuthServer.php:20 Stack trace: #0 ***/httpdocs/library/AuthServer.php(10): AuthServer->handleRequest() #1 ***/httpdocs/auth/index.php(3): AuthServer->__construct() #2 {main} thrown in ***/httpdocs/library/AuthServer.php on line 20   
Mitglied: r.nahm
Lösung r.nahm 15.12.2013, aktualisiert am 16.12.2013 um 13:16:24 Uhr
Goto Top
das ist jetzt mal richtig KLEINLICH was da nicht stimmte...anscheinend hat eclipse bei dem String für diese eine Exception irgendetwas nicht korrekt kodiert....den throw auskommentieren, neue Zeile, exakt die selbe anweisung nochmal darunter schreiben und es läuft????

ich verstehe es nicht aber es funktioniert....

Problem /Symtom behoben aber hätte nun doch gerne eure Meinung zu diesem Phänomen...


LG
Mitglied: 106543
106543 16.12.2013 um 10:18:59 Uhr
Goto Top
Hi,

ich hab zwar wenig Ahnung von PHP, aber könntest du den Artikel bitte umbenennen in "Das Tagebuch des r.nahm" face-wink Äußerst unterhaltsam zu lesen. Wirklich :D

Mit freundlichen und leicht ironischen Grüßen
Exze