Omitir os erros sem ter que usar o @
Olá pessoal,
Não consegui encontrar uma solução para o seguinte problema, vou usar uma situação de conexão com banco de dados, mas isso pode ser aplicado a outras situações também.
Em ambiente de desenvolvimento (localhost) sempre mostro tudo no PHP: erros, notices, warnings, é tudo escancarado mesmo, e obviamente quando "está no ar", nada disso deve aparecer. Pois bem, quando temos uma conexão com banco de dados, temos:
// Conexão com o MySQL utilizando PDO
try {
$pdo = new PDO("mysql:host=".$db_hostname."; dbname=".$db_name.";", $db_username, $db_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, TRUE);} catch(Exception $exception) {
die("Erro ao conectar o banco de dados", utf8_encode($exception->getMessage()), $exception->getLine());
}Se eu executar dessa forma, caso algum erro de conexão aconteça, antes de executar o que está na exceção (die), é gerado um Warning com a mesma mensagem exibida ali no catch. Por conta disso, como eu sei que se caso algum erro a conexão, sei que o sistema lançará a exceção e vou poder tratar o erro normalmente, entretanto, para evitar que esse warning seja gerado, eu tenho que colocar o @ na 2ª linha:$pdo = @new PDO("mysql:host= [...]Pensava que esse warning não seria gerado justamente pelo fato de estar utilizando um try/catch, mas não... Pergunta: existe como, então, evitar que esses warnings sejam gerados, uma vez que a intenção do try/catch é justamente tratar isso, mas sem ter que desabilitar a exibição de todos os warnings e também sem utilizar o @?
Abraço!
Discussão (4)
Carregando comentários...