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

Printed on: April 26, 2024 at 15:04 o'clock

Member: r.nahm
r.nahm Dec 15, 2013 at 17:19:07 (UTC)
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>
Member: r.nahm
r.nahm Dec 15, 2013 at 17:21:46 (UTC)
Goto Top
$output gibt dann folgendes aus
{"error":{"message":null,"type":"Exception","code":123}}  
Member: r.nahm
r.nahm Dec 15, 2013 at 17:57:47 (UTC)
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*
Member: r.nahm
r.nahm Dec 15, 2013 at 18:02:25 (UTC)
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...
Member: r.nahm
r.nahm Dec 15, 2013 at 18:04:52 (UTC)
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   
Member: r.nahm
Solution r.nahm Dec 15, 2013, updated at Dec 16, 2013 at 12:16:24 (UTC)
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 Dec 16, 2013 at 09:18:59 (UTC)
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