Qual é a diferença entre erros e exceções? [duplicado]
possível duplicado:
diferenças entre excepção e erro
Como posso diferenciar entre erros e exceções em Java?
4 answers
Um erro indica problemas graves. que um pedido razoável deve não tentar apanhar."
Enquanto
Uma excepção " indica as condições que um pedido razoável pode quero apanhar."
O erro juntamente com RuntimeException
e as suas subclasses são unchecked
excepções. Todas as outras classes de excepção são checked
excepções.
As excepções verificadas são geralmente aquelas a partir das quais um programa pode recuperar pode ser uma boa idéia para se recuperar de tais exceções programaticamente. Os exemplos incluem:FileNotFoundException
, ParseException
, etc. Espera-se que um programador verifique essas exceções usando o bloco try-catch ou atirá-lo de volta para o chamador
ArrayIndexOutOfBoundException
, ClassCastException
, etc. Muitas aplicações utilizarão try-catch
ou throws
cláusula para RuntimeExceptions
e as suas subclasses but from the language perspective it is not required to do so. Note que a recuperação de um {[[0]} é geralmente possível, mas os tipos que desenharam a classe / exceção consideraram desnecessário para o programador Final verificar tais exceções.
Os erros também estão fora de controlo e o programador não é obrigado a fazer nada com estes. Na verdade, é uma má ideia usar uma cláusula try-catch
para erros. Na maioria das vezes, a recuperação de um erro não é possível e o programa deve ser permitido terminar. Os exemplos incluem:OutOfMemoryError
, StackOverflowError
, etc.
Lembre-se que, embora os erros sejam excepções não verificadas, não devemos tentar lidar com eles, mas é correcto lidar com {[[9]}(também com excepções não verificadas) em código. As excepções verificadas devem ser tratadas pelo código.
Error
e {[1] } ambos estendem Throwable
, mas principalmente {[[0]} é jogado pela JVM em um cenário que é fatal e não há nenhuma maneira para o programa de aplicação para se recuperar desse erro. Por exemplo OutOfMemoryError
.
Embora mesmo a aplicação possa criar um Error
mas não seja uma boa prática, em vez disso, as aplicações devem usar excepções verificadas para as condições recuperáveis e excepções de tempo de execução para erros de programação.
Erro é algo que na maioria das vezes você não consegue lidar com isso.
A excepção era para te dar uma oportunidade de fazeres alguma coisa com ela. como tentar outra coisa ou escrever no diário de bordo.try{
//connect to database 1
}
catch(DatabaseConnctionException err){
//connect to database 2
//write the err to log
}