SO 질문에 대해 내가 확실하지 않은 코드에 대해 여기 에 물었 습니다 . 누군가가 "BTW, 끔찍한 코드 : 오류 억제 기호 (@)를 많이 사용합니다."라고 대답했습니다.
이것이 나쁜 습관 인 이유가 있습니까? 다음과 같은 것들로 :
$db=@new mysqli($db_info) or die('Database error');
사용자 지정 오류 메시지 만 표시 할 수 있습니다. 오류를 억제하지 않으면 다음과 같은 일반적인 PHP 메시지가 계속 표시됩니다.
경고 : mysqli :: mysqli () : php_network_getaddresses : getaddrinfo 실패 : 알려진 호스트가 없습니다. 에서 일부 \ 파일 \ 경로 에 라인 (6)
뿐만 아니라 '데이터베이스 오류'.
에러 억제는 항상 나쁘고, 그렇다면, 구체적으로 위의 것은 무엇입니까?
업데이트 : 사용중인 실제 코드는 다음과 같습니다.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b><br />Error occurred on line <b>' . __LINE__ . '</b> of <b>' . __FILE__ . '</b>' : ''))
이전의 모든 출력을 제거하고 오류 메시지를 표시합니다. 따라서 오류 메시지에 구체적으로 발생한 사항 (오류 억제가 나쁜 이유로 사람들이 제안하는 것)에 대한 세부 정보가 포함되어 있지 않다는 사실은 관련이 없습니다.
or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b>' : ''))