Как устранить / получить ответ об ошибке при запуске недопустимых заданий BigQuery?

В этом коде я пытаюсь запустить select в таблице, которая не существует, getJobReference() возвращает NULL и мне бы хотелось поймать такую ​​ошибку и хотелось бы получить сообщения об ошибках, полученные каким-то образом.

Как получить сообщение об ошибке, когда что-то не удается?

 $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); //$client->setDeveloperKey(API_KEY); if (isset($_SESSION['service_token'])) { $client->setAccessToken($_SESSION['service_token']); } $key = file_get_contents($key_file_location); $cred = new Google_Auth_AssertionCredentials( $service_account_name, array( 'https://www.googleapis.com/auth/bigquery', ), $key ); $client->setAssertionCredentials($cred); if ($client->getAuth()->isAccessTokenExpired()) { $client->getAuth()->refreshTokenWithAssertion($cred); } $_SESSION['service_token'] = $client->getAccessToken(); var_dump($_SESSION); $bq = new Google_Service_Bigquery($client); //build query $sql = 'select * from example.table LIMIT 10'; $job = new Google_Service_Bigquery_Job(); $config = new Google_Service_Bigquery_JobConfiguration(); $queryConfig = new Google_Service_Bigquery_JobConfigurationQuery(); $config->setQuery($queryConfig); $job->setConfiguration($config); $queryConfig->setQuery($sql); $insert = new Google_Service_Bigquery_Job($bq->jobs->insert(PROJECT_ID, $job)); $jr = $insert->getJobReference(); var_dump($jr);/*THIS RETURNS NULL */ $jobId = $jr['jobId']; $res = new Google_Service_Bigquery_GetQueryResultsResponse($bq->jobs->getQueryResults(PROJECT_ID, $jobId)); //see the results made it as an object ok: var_dump($res); 

Их API автоматически создает некоторые классы на лету, а ошибки при съёмках производятся.

Я завершил процесс отладки, чтобы получить такие ошибки:

 try { $job = $bq->jobs->insert(PROJECT_ID, $job); $status = new Google_Service_Bigquery_JobStatus(); $status = $job->getStatus(); // print_r($status); if ($status->count() != 0) { $err_res = $status->getErrorResult(); die($err_res->getMessage()); } } catch (Google_Service_Exception $e) { echo $e->getMessage(); exit; } 

Общий способ – посмотреть, есть ли класс Status для используемой службы. Блок Exception активируется только тогда, когда возникают ошибки, и это когда dryRun .

 $config->setDryRun(true); 

Я не очень хорошо знаю этот SDK, но вы проверяли, есть ли у вас исключение?

 try { $insert = new Google_Service_Bigquery_Job($bq->jobs->insert(PROJECT_ID, $job)); } catch (Exception $e) //or probably better Google_Exception { print('Something went wrong'); }