2.3. Fehlerbehandlung

Tritt bei einem Aufruf der RPC Schnittstelle ein Fehler auf, so wird ein entsprechendes Exception-Objekt geworfen. Alle Ausnahmefehler der PHP RPC Schnittstelle sind von der Klasse GhRpcException abgeleitet.
Die folgende Übersicht fasst die einzelnen Exception-Klassen zusammen und beschreibt, wann sie auftreten:
Klasse
Beschreibung
GhRpcException Dies ist die Basisklasse, von der alle RPC-Ausnahmefehler abgeleitet sind. Diese tritt normalerweise nicht selbst auf.
GhRpcFaultException Diese Exception meldet Fehler, die vom Server als Antwort auf eine RPC Anfrage zurück übermittelt werden, beispielsweise wenn auf nicht existierende Objekte zugegriffen wird, ein Element verändert werden soll, ohne dass es zuvor gesperrt wurde, oder eine Gruppe abgerufen wird, auf die der Benutzer, der im GhRpcClient Objekt angegeben wurde, keine Zugriffsberechtigung hat. Diese Exception stellt also einen Funktionsfehler dar, keinen Verbindungsfehler. Der Server liefert bei dieser Exception einen Fehlercode und eine (englischsprachige) Nachricht, die den genauen Fehler beschreibt.
GhRpcConnectionException Diese Ausnahme wird bei einem Verbindungsfehler geworfen, beispielsweise wenn der Server nicht erreichbar ist oder beim Übertragen der RPC Daten ein Fehler auftritt. Von dieser Klasse sind weitere Klassen abgeleitet, die spezielle Verbindungsprobleme repräsentieren.
GhRpcAuthenticationException Dies bezeichnet einen Fehler bei der Benutzerauthentifizierung. Dies kann aufgrund falscher Zugangsdaten auftreten, aber beispielsweise auch, wenn sich mehr Benutzer anmelden, als CULs verfügbar sind. Diese Exception ist von GhRpcConnectionException abgeleitet, da ein Authentifizierungsfehler letztlich auch ein Verbindungsfehler ist.
GhRpcNotFoundException Dieser Fehler tritt auf, wenn bei einer RPC Anfrage an den Server ein Teil der Anfrage-URL nicht gefunden wurde. Bei den normalen Anfragen, die über die RPC Dienste gesendet werden, tritt dieser Fehler nicht auf.
Das folgende Beispiel greift das Beispiel zum Abruf der Themen vom Server aus dem Abschnitt RPC Aufrufe auf und ergänzt es um eine Fehlerbehandlung:
Abruf der Themenliste mit Fehlerbehandlung:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
require_once 'ghrpc/ghrpc.php';

$client = new GhRpcClient('localhost'80false'tester''test123');
$client->setUniqueClientIdCookieName('ghrpcexample2');
$topicService rpc_topicslib::newRpcTopics($client);

try
{
  
$topicsList $topicService->GetList(false);

  foreach(
$topicsList as $topic)
    echo 
'Thema "' htmlspecialchars($topic->Name) . '" (ID: ' $topic->ID ', Pfad: ' htmlspecialchars($topic->Path) . ')<br>';
}
catch(
GhRpcAuthenticationException $exception)
{
  die(
'Der Benutzer konnte nicht am System angemeldet werden.');
}
catch(
GhRpcConnectionException $exception)
{
  die(
'Es konnte keine Verbindung zum Server hergestellt werden.');
}
catch(
GhRpcFaultException $exception)
{
  die(
'Der Server hat einen Fehler gemeldet: ' $exception->getMessage() . ' (Fehlercode: ' $exception->getCode() . ')');
}