JavaRush /Blogue Java /Random-PT /Tradução: 6 exceções Java que atormentam os recém-chegado...
profeg
Nível 18

Tradução: 6 exceções Java que atormentam os recém-chegados ao Java.

Publicado no grupo Random-PT

6 exceções Java que assombram os iniciantes em Java.

(Original) (Sou novo em Java e inglês, então ficarei feliz em receber críticas e ajuda) Antes e agora, encontrei muitos novatos em Java que têm problemas com algumas exceções comuns que preciso explicar mais uma vez. Acredito que outros desenvolvedores Java seniores tenham o mesmo problema ao tentar ajudar os novatos a lidar com essas exceções. Assim, escrevi este artigo para meu próprio desenvolvimento. Sinta-se à vontade para comentar este artigo ou adicionar exceções à lista abaixo.
1.NoClassDefFoundError _
Esta é uma daquelas exceções, com uma mensagem como “Exception in thread “main” NoClassDefFoundError” , que a maioria dos novos desenvolvedores Java encontra no mundo da programação Java. Um iniciante escreve um programa que exibe “Olá, mundo!”, vai até a linha de comando, digita “java…”, pressiona enter e BAM! =). E descobrir como fazer o programa imprimir “Olá, mundo!” no monitor, leva algum tempo. NoClassDefFoundError ocorre quando a Java Virtual Machine (JVM) tenta acessar uma classe no momento da inicialização e a classe não é encontrada, mesmo que a mesma classe tenha sido encontrada no tempo de compilação. Na maioria das vezes, essa exceção ocorre ao tentar executar um programa usando o comando “java” e o caminho de classe não está configurado corretamente. Aqui está uma descrição dos motivos pelos quais essa exceção ocorre.
  • A classe não está disponível em -classpath.
  • A variável de ambiente CLASSPATH foi substituída. Você pode verificar sua presença e exatidão usando o comando “set” do Windows.
A solução para o problema é descrita com mais detalhes aqui.
Além disso, você precisa entender a diferença entre a variável de ambiente CLASSPATH e a chave do interpretador -classpath. Os profissionais não recomendam o uso do CLASSPATH. A melhor maneira é passar a chave -classpath para o interpretador.
2. ClassNotFoundException
ClassNotFoundException é outra exceção que se torna um pesadelo para um novato assim que ele começa a programar. Curiosamente, o desenvolvedor Java médio geralmente fica confuso entre as exceções ClassNotFoundException e NoClassDefFoundError . E assim, a diferença entre essas duas exceções continua sendo uma das perguntas mais frequentes nas entrevistas para o cargo Junior . ClassNotFoundException ocorre quando a JVM tenta carregar uma classe específica e não a encontra no classpath. Um dos lugares comuns onde um novo desenvolvedor Java o encontra pela primeira vez é conectando-se a um banco de dados usando a biblioteca JDBC. Lá tentaremos carregar o driver usando código como Class.forName("JDBCdriver"). Um bom artigo sobre ClassNotFoundException está aqui . Tentar entender o conceito de Java Classloaders é o método mais eficaz para lidar com esse problema. Você pode ler como configurar o caminho de classe Java no ambiente Win/Unix . Conforme declarado nos documentos Java , uma exceção ocorre nos seguintes casos:
  • Você tenta carregar uma classe usando o método Class.forName e o arquivo .class não está no classpath. Este é o cenário mais comum dos três listados aqui.
  • Quando o carregador de classes tenta carregar uma classe usando o método loadClass.
  • Quando o carregador de classes tenta carregar uma classe usando findSystemClass.
3. NullPointerException
Esta exceção é mais fácil de entender para iniciantes do que as duas primeiras. Além disso, esta exceção é facilmente identificada porque quando ocorre, a mensagem sobre a exceção indica o número da linha do programa onde ela ocorreu. Esta exceção ocorre quando a JVM tenta acessar um objeto ou tenta chamar um método em um objeto e recebe um valor nulo em vez de uma referência ao objeto. O Java Doc também declara os seguintes motivos:
  • Acessar ou alterar um método em um objeto inválido. (ou seja, em vez de uma referência a um objeto JVM, ele fica nulo)
  • Obtendo o comprimento de um array quando ele é inválido. (não inicializado, por exemplo)
  • Foi feita uma tentativa de acessar um elemento de array inexistente do tipo Object. (ou seja, quando, em vez de uma referência de objeto, o elemento da matriz contém nulo)
O método mais simples para evitar essa exceção é usar uma verificação não NULL. No entanto, mais cedo ou mais tarde, isso se tornará uma prática de desenvolvimento Java e você encontrará verificações não NULL em todos os lugares. Curiosamente, inserir verificações não NULL em todos os lugares não é considerado um bom estilo de programação . E o principal motivo para usar a verificação não NULL é que o desenvolvedor deseja passar um objeto nulo em caso de falha ou erro. Em vez disso, é uma boa prática de programação que os programadores devem usar para retornar um objeto vazio, em vez de um valor nulo , como lógica básica de como um programa se comportará no caso de um erro. Contudo, adotar esta prática de programação é mais difícil do que parece.
Há um bom artigo sobre isso em nosso recurso.
4. ClassCastException
Esta é outra exceção familiar para iniciantes, que ocorre ao tentar lançar um objeto para uma classe que não é uma subclasse dele. Novamente, isso é bastante fácil de entender, identificar e simples de corrigir. Uma maneira de evitar essa exceção quando o tipo do objeto é desconhecido em tempo de execução é usar “InstanceOf” para verificar se o objeto é uma instância de uma classe específica.
5. ArrayIndexOutOfBoundsException
Esta exceção é autoexplicativa e ocorre quando a JVM tenta acessar um elemento do array com um índice inexistente, como negativo (-1) ou maior ou igual ao tamanho do array. É bastante fácil de entender, definir e corrigir . Por exemplo, ao criar um loop, for (i = 0; i <= cmd_stack.length; i++) System.out.println(cmd_stack[i]); ocorre uma exceção, pois no array os índices começam em 0, e o método length retorna o número de elementos, e o número é 1 maior que o valor do último índice. Uso correto for (i = 0; i < cmd_stack.length; i++) System.out.println(cmd_stack[i]);
6. Exceção de argumento ilegal
Essa exceção é menos comum e bastante fácil de entender, identificar e resolver. Ocorre quando a JVM tenta chamar um método inexistente ou um método com um argumento inválido.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION