Diferença entre Exceção e Erro

Anonim

Exceção vs erro

O comportamento inesperado deve ocorrer quando um programa está sendo executado. Isso pode ser devido a exceções ou erros. Exceções são eventos, que podem perturbar o fluxo normal do programa. Erros são condições que podem ser consideradas irrecuperáveis. As exceções são principalmente relacionadas ao próprio aplicativo, enquanto os erros estão relacionados ao sistema no qual o programa está sendo executado.

O que é uma Exceção?

Exceção é um evento, que pode perturbar o fluxo normal do programa. A exceção do nome vem do "evento excepcional". Lançar uma exceção é o processo de criação de um objeto de exceção e liberá-lo para o sistema de tempo de execução. O objeto de exceção é criado pelo método no qual a exceção ocorreu. O objeto Exception contém informações úteis, como o tipo e a descrição da exceção. Quando o sistema de tempo de execução recebe o objeto de exceção, ele tentará encontrar alguém para lidar com ele dentro da pilha de chamadas, atravessando-o na ordem inversa (em que os métodos foram chamados). A pilha de chamadas é a lista ordenada de métodos, que foram chamados antes do método em que ocorreu a exceção. O sistema de tempo de execução é bem-sucedido se encontrar um método com um manipulador de exceção. O manipulador de exceção é um bloco de código que pode lidar oficialmente com a referida exceção. Se o sistema de tempo de execução encontrar um manipulador apropriado (isto é, o tipo de exceção corresponde ao tipo que pode ser manipulado), ele passará o objeto de exceção para o manipulador. Isso é chamado de captura da exceção. No entanto, se a exceção não puder ser tratada, o programa será encerrado. Em Java, as exceções herdam da classe 'Throwable'. 'NullPointerException e ArrayIndexOutOfBoundsException são duas exceções comuns em Java.

O que é um erro?

Um erro é uma condição que pode ser considerada irrecuperável, como o programa que requer uma quantidade de memória maior que o que está disponível. Esses erros não podem ser tratados no tempo de execução. Se ocorrer um erro, o programa terminará. Em Java, os erros herdam da classe Throwable. Erros geralmente representam sérios problemas que o programador (ou o aplicativo) não deve tentar pegar. Os erros são simplesmente condições anormais, que nunca se espera que ocorram em circunstâncias normais e, portanto, nunca previstas. Por exemplo, OutOfMemoryError, StackOverflowError e ThreadDead são esses erros. Os métodos nunca devem ter manipuladores quanto a erros.

Qual a diferença entre exceção e erro?

Ambos os erros e exceções são indesejados durante a execução de um programa. No entanto, eles têm diferenças importantes. Exceções podem ser previstas pelo programador, enquanto um erro é difícil de prever.As exceções podem ser verificadas ou desmarcadas. Mas os erros sempre estão desmarcados. Exceções geralmente indicam um erro causado pelo programador. No entanto, ocorrem erros devido a um erro no sistema ou a um uso inadequado de um recurso. Portanto, as exceções devem ser tratadas no nível do aplicativo, enquanto os erros devem ser atendidos no nível do sistema (somente se possível). Depois de processar uma exceção, você deverá retornar ao fluxo normal do programa. Mas, mesmo que um erro seja detectado, o programador pode não saber como lidar com isso em primeiro lugar. Ao contrário do tratamento de erros tradicional, as exceções permitem separar o código de manipulação de erros do código normal.