Intereting Posts
PHP 405 не разрешен PHP SOAP Неверная версия, но возвращает ответ PHP Преобразование кодированного текста Windows-1256 в UTF-8 Как конвертировать mp3 в mp4 с помощью ffmpeg? C # SHA-1 против PHP SHA-1 … Различные результаты? Заменяйте строку только один раз с помощью php preg_replace Как запустить сценарий оболочки как другой пользователь с PHP на Nginx? У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' '') 'в строке 2 Как вы соответствуете 12-часовому времени hh: mm в регулярном выражении? Как создать ссылку для профиля пользователя, например facebook для моей веб-страницы Как я могу удалить все пустые значения, когда я взорву строку с помощью PHP? Самый эффективный способ получить следующую букву в алфавите с помощью PHP Сокращение PHP для isset ()? Изменение фона для Night & Day с помощью php? Функция set_magic_quotes_runtime () устарела в phpmailer

file_get_contents хороший способ обработки ошибок

Я пытаюсь обработать метод file_get_contents с ошибкой, поэтому, даже если пользователь вводит неверный веб-сайт, он будет эхо-сообщение об ошибке, а не непрофессиональное

Предупреждение: file_get_contents (sidiowdiowjdiso): не удалось открыть поток: нет такого файла или каталога в C: \ xampp \ htdocs \ test.php в строке 6

Я думал, что если я попытаюсь поймать, он сможет поймать ошибку, но это не сработало.

try { $json = file_get_contents("sidiowdiowjdiso", true); //getting the file content } catch (Exception $e) { throw new Exception( 'Something really gone wrong', 0, $e); } 

Попробуйте cURL с curl_error вместо file_get_contents:

 <?php // Create a curl handle to a non-existing location $ch = curl_init('http://404.php.net/'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $json = ''; if( ($json = curl_exec($ch) ) === false) { echo 'Curl error: ' . curl_error($ch); } else { echo 'Operation completed without any errors'; } // Close handle curl_close($ch); ?> 

file_get_contents не генерируют исключение в ошибке, вместо этого он возвращает false, поэтому вы можете проверить, является ли возвращаемое значение ложным:

 $json = file_get_contents("sidiowdiowjdiso", true); if ($json === false) { //There is an error opening the file } 

Таким образом, вы все равно получите предупреждение, если вы хотите его удалить, вам нужно поставить @ перед file_get_contents . (Это считается плохой практикой)

 $json = @file_get_contents("sidiowdiowjdiso", true); 

Вы можете выполнить одно из следующих действий:

Установите глобальный обработчик ошибок (который также будет обрабатывать ПРЕДУПРЕЖДЕНИЯ), для всех ваших необработанных исключений: http://php.net/manual/en/function.set-error-handler.php

Или путем проверки возвращаемого значения функции file_get_contents (с помощью оператора ===, поскольку он будет возвращать логическое значение false при ошибке), а затем соответствующим образом обработать сообщение об ошибке и отключить отчет об ошибках функции, добавив «@», вот так:

 $json = @file_get_contents("file", true); if($json === false) { // error handling } else { // do something with $json } 

В качестве решения вашей проблемы попробуйте выполнить следующий фрагмент кода

  try { $json = @file_get_contents("sidiowdiowjdiso", true); //getting the file content if($json==false) { throw new Exception( 'Something really gone wrong'); } } catch (Exception $e) { echo $e->getMessage(); }