gelöst PHP Exception arbeitet nicht korrekt ?!?

Mitglied: r.nahm

r.nahm (Level 1)

15.12.2013, aktualisiert 20:37 Uhr, 1764 Aufrufe, 7 Kommentare

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:

01.
<?php
02.
	function ExceptionHandler($e)
03.
	{
04.
		global $output;
05.
		if((get_class($e) == "OAuthResponse") OR (get_class($e) == "Response"))
06.
		{
07.
			$output->set($e->getData(), $e->getHeader());
08.
		}else{
09.
			$output->set(array("error" => array(
10.
						"message" 	=> $e->getMessage(),
11.
						"type"		=> get_class($e),
12.
						"code"		=> $e->getCode())));
13.
		}
14.
		$output->close();
15.
	}
16.
	set_exception_handler("ExceptionHandler");
17.

18.
?>
19.
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
Mitglied: r.nahm
15.12.2013 um 18:19 Uhr
Zum besseren Verständnis, mehr code:

01.
	$classes = array(
02.
		'Output' => '/Output.php',
03.
		'AuthException' => '/AuthException.php',
04.
		'ExceptionHandler' => '/ExceptionHandler.php',
05.
		
06.
		...
07.

08.
	);
09.

10.
	foreach($classes as $key => $value){
11.
		require_once($libDir . $value);
12.
	}
13.
	$output = new Output();
01.
$server = new AuthServer();
01.
Class AuthServer extends AuthCommon
02.
{
03.

04.
	function __construct()
05.
	{
06.
		return $this->handleRequest();
07.
	}
08.

09.
	public function handleRequest()
10.
	{
11.

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

17.
	}
18.
</php>
Mitglied: r.nahm
15.12.2013 um 18:21 Uhr
$output gibt dann folgendes aus
01.
{"error":{"message":null,"type":"Exception","code":123}}
Mitglied: r.nahm
15.12.2013 um 18:57 Uhr
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:
01.

02.
<?php
03.
	require_once("inc/init.php");
04.
//	throw new Response(array('test' => 'response'), array('X-Debug' => 'it works'));
05.
	$auth = new AuthCommon();
06.
	$auth->setParam(array('test' => 'abcd', 'test2' => '1234'));
07.
	$auth->setSignatureMethod('none');
08.
	//print_r($auth);
09.
?>
/auth/index.php:
01.
<?
02.
require_once('../inc/init.php');
03.
$server = new AuthServer();
04.

05.
	throw new AuthException('Anfrage enthält keine Signatur.', 123);
06.
$server->setConsumer(md5('1234567880'), md5('abcdefghi'));
07.
print_r($server->request);
08.
?>
09.
jetzt weis ich noch weniger woran was wie und wo liegen könnte...

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

01.
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
15.12.2013 um 19:04 Uhr
selbes spiel bei einem Wurf aus der Klasse heraus:
01.
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 15.12.2013, aktualisiert 16.12.2013
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
16.12.2013 um 10:18 Uhr
Hi,

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

Mit freundlichen und leicht ironischen Grüßen
Exze
Titel: PHP Exception arbeitet nicht korrekt ?!?
Content-ID: 224567
Art des Inhalts: Frage
Ausgedruckt am: 17.09.2019 um 00:14:24 Uhr
URL: https://administrator.de/contentid/224567