Jak "zastopować" FatalError?


(northwest) #1

Witam serdecznie,
Mam taki skrypt w PHP:
 

$fb = new Facebook\Facebook([

  'app_id' => '',

  'app_secret' => '',

  'default_graph_version' => 'v2.5',

]);

  

$helper = $fb->getRedirectLoginHelper();  

  

try {  

  $accessToken = $helper->getAccessToken();  

 

  if (!$accessToken->isLongLived()) {

    $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken); 

  }

 

  

  

} catch(Facebook\Exceptions\FacebookResponseException $e) {  

  // When Graph returns an error  

  

  echo 'Graph returned an error: ' . $e->getMessage();  

  exit;  

} catch(Facebook\Exceptions\FacebookSDKException $e) {  

 

  echo 'Facebook SDK returned an error: ' . $e->getMessage();  

  exit;  

}  

 

 

try {

  $response = $fb->get('/me?fields=id,name,email,first_name,last_name', $accessToken->getValue());

} catch(Facebook\Exceptions\FacebookResponseException $e) {

  echo 'ERROR: Graph ' . $e->getMessage();

  exit;

} catch(Facebook\Exceptions\FacebookSDKException $e) {

  // When validation fails or other local issues

  echo 'ERROR: validation fails ' . $e->getMessage();

  exit;

}

$me = $response->getGraphUser();



$response = $fb->get('/PAGE-ID?fields=access_token', $accessToken->getValue());

$result = $response->getGraphObject()->asArray();

$pageToken = $result['id']; // id strony z której nastąpiło logowanie

$request = $fb->get('/me/accounts', $accessToken->getValue());

$graphObject = $request->getBody();

$graphObject = json_decode($graphObject, true);



}

Bardzo często łapie mi FATAL ERROR: Fatal error: Call to a member function getLongLivedAccessToken() on null in /home/fb.php  (i słusznie).

W jaki sposób zrobić, żeby skrypt nie wyświetlał komunikatu Fatal Error - a np. komunikat "Nastąpił Błąd - wypisz się z FB"?

Chodzi mi tylko o to żeby skrypt nie sypał FatalErrorem - a wyświetlał komunikat po polsku (w momencie błędu) i się zatrzymywał?

Bardzo proszę o pomoc,Northwest


(Fizyda) #2

Obsługa wyjątków.


(Piesek64) #3

http://php.net/manual/en/language.exceptions.php


(pr0100) #4

Niestety ale PHP jest ułomny i ma 2 sposoby na okazywanie że coś mu się nie podoba: errory i exceptiony. Jeżeli były to wyjątek to byś dostał “Uncaught Exception…”

 

http://php.net/manual/en/function.set-error-handler.php

 

 


(Fizyda) #5

To w takim razie są dwa wyjścia:

  1. dobre - wyłączyć wyświetlanie errorów w php.ini, zamiast tego można je logować do pliku

  2. użyć ob do przechwycenia wyświetlanego tekstu - powinno się udać.