Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Katya_crisd

com try/catch

Recommended Posts

Bom dia pessoal, minha dúvida é a seguinte, estou fazendo testes com try/catch em php mas aparentemente ele não está funcionando, não sei se é erro de conceito meu...

 

bom abaixo segue o código

 

<?php	$um   = 1;	$zero = 0;	try {		echo $um/$zero;	} catch(Exception $e) {		echo "Ocorreu o erro $e";	}?>

Como visto, ele vai dar um erro, pois o código está dividindo por zero, sendo assim ele deveria imprimir a mensagem "Ocorreu o erro...", porém ele nunca entra nessa parte do código...

 

 

Alguém sabe pq ele não entrou no bloco da exceção?

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que erros de aritimética o php nao pega...só qdo você tenta instanciar um obj inexistente, etc...:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não está somente dando erro em calculo matemático, para conectar no mysql tbm não funciona...

 

<?php	try {		$conexao = mysql_connect("localhost", "root", "");	} catch(Exception $e) {		echo "Ocorreu o erro $e";	}?>

Tens como me dar um exemplo de como ele entra no catch???

Compartilhar este post


Link para o post
Compartilhar em outros sites

ahh pode crer...eu confundi com o bloco do javascript... que n precisa dar throw pra cair no catch...O.o burrao =XX!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, achei meio ilógico o programador sempre ter que gerar a excessão na mão para pegar no catch... Em outras linguagens como .net, java e javascript como o nosso amigo MadPatryk colocou o engine da linguagem gera a excessão automaticamente...

 

Não vejo muita vantagem usar o try/catch para pegar excessões, vou continuar usando as técnicas vindas do passado do php, o velho e útil if (!$variavel) que é totalmente procedural e contra programação OO...

 

Mas é isso ai... ( mesmo assim, o php continua sendo a melhor linguagem para desenvolvimento WEB)

 

Valeu pessoal!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso acontece porque o php é configurado para sempre retornar erro e não excessão.

 

Para que o try/catch funcione você tem que invocar uma excessão para este evento, o que muitas vezes é mais facil você testar se vai dar erro antes.

 

No caso do seu código.

<?php
	$um   = 1;
	$zero = 0;
	try {
		echo $um/$zero;
	} catch(Exception $e) {
		echo "Ocorreu o erro $e";
	}
?>
é mais facil você testar se a variavel $zero é nula ou zero

 

<?php
	$um   = 1;
	$zero = 0;
	if(!$zero)
		echo $um/$zero;
	else
		echo "Variavel $zero não pode ser zero";
?>
Mais se mesmo assim, há casos que necessitamos de excessão. Neste caso

 

<?php
try {
	if (!$zero) 
		throw new Exception('Division by zero.');

	echo $um/$zero;	
}
 catch (Exception $e) {
	echo "<br>Ocorreu uma excessão: " . $e->getMessage();
}

echo "<br>Passou pela Excessão sem perda do projeto";
?>
Mais veja que neste caso você usou muito mais programação e esta usando muito mais memória e processamento para retornar o mesmo efeito.

 

Então a dica final é: Analise cada caso. Cada caso é um caso diferente e deve ser tratado diferente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.