Compile-time error X Runtime exception

Boa Noite a todos,

Tenho uma duvida que creio que muitos iniciantes como eu que estao se preparando para tirar a certificacao possuem… mas no meu caso nao estou tao leigo no assunto assim, ja li o livro da K&B e re-li alguns capitulos nas duvidas que possuia.
Mas uma duvida que sempre tive e que vejo na maioria das respostas dos mocks que ando fazendo eh distinguir se o codigo da um Compile-time error ou gera uma Runtime exception. Eu consigo identificar que o codigo nao roda e que algo esta errado, mas na hora de escolher entre se o codigo gera um erro de compilacao ou uma exception eh uma duvida que tenho em algumas questoes…

Espero que alguem me ajudem,

Gustavo Santos.

Muitas vezes estou passando exatamente pela situação que o gumatias citou.
Também gostaria de reforçar o pedido pra que alguém defina melhor quando os códigos causam exceção de compilação ou de tempo de execução.

Grato.

Compile-time error são os error são gerados quando o arquivo .java é compilado. E runtime error é quando o programa compila corretamente e quando vai utilizar algo que nao deu compiletime error, surge o runtime error.

compiletime errror


class A {

    private String a;

}

class B extends A {

    public void showA() {

        A classA = new A();
        classA.a; // nao é possivel acessar a pois é private
    }

}

runtime error

String s = null;
s.trim;

acho que é isso, abraco

gabrielmassote,
conceitualmente até entendo o que é uma exception de execução e de compilação.
A grande dúvida fica mesmo na hora de bater o olho no código e descobrir se causará falha na compilação ou somente quando executar, entendeu?
Não sei se exite alguma regra pra facilitar esse entendimento.
De qq forma obrigado por sua tentativa.

rmalati quando for falar de Erro de Runtime, não coloque a palavra exception, pois exceções são diferentes de erros de Runtime, :wink:, só um toque.

Eu acho que para descobrir se é erro de runtime ou compilação, é complicado para quem tem pouca experiência, na minha opnião é prática. Acho que estudar para certificação(como eu tb estou fazendo) não dá apenas lendo e fazendo simulados, tem que ir para o código(conselho para quem tá iniciando em java, não usar IDE, use editores de Texto, tipo Context(free), UltraEdit(pago), e ir compilado usando o ms-dos, pois você aprende a configurar classhpath, compilar, executar, passar parâmetros, etc) e testar tudo que o que pensou.
É bom conhecer os erros de Runtime, que são os erros que você realmente precisa saber para a certificação(java 5) e resto é exception.
ClassCastException
IndexOutOfBoundException
ArithmeticException
NullPointerException

olá,

Não sei c vou conseguir explicar direito, mas vou tentar esvoçar alguma coisa !!! KKKKKK

Compile Error: imagina a situação quando vc quer compilar um programa e tem algum erro na sintaxe.

Por exmplo ta faltando um “;” no final de uma linha de código. Quando vc for compilar ele vai gerar um erro dizendo q esse caracter naum ta presente.
Lógico q naum é somente esse… existem diversos outros erros de compilação. Quando vc usa algum IDE (Netbeans ou Eclipse) quando vc digita um código e a linha fica com em vermelho quer dizer q ali esta tendo um erro de compilaçã.

Exception Error: Este erro acontece no meio da execução do programa devido a algum tipo de falha.
Por exmplo, ta criou um programa q acessa um servidor por socket e um dia seu programa tenta acessar e o servidor naum to no ar por manutenção. ele vai gerar um Exceção dizendo que houve alguma falha. Outro exemplo seria vc querer gravar dados em um arquivo e o arquivo não existir no sistema. outro exemplo seria inserir um inteiro na 10º posição de um array sendo que este array tem somente 5 posições (ArrayIndexOutException)

procurem olhar os diversos erros de compilação q existe e estudarem as exceções.

Espero ter ajudado

Ricardo

[quote=rmalati]gabrielmassote,
conceitualmente até entendo o que é uma exception de execução e de compilação.
A grande dúvida fica mesmo na hora de bater o olho no código e descobrir se causará falha na compilação ou somente quando executar, entendeu?
Não sei se existe alguma regra pra facilitar esse entendimento.
De qq forma obrigado por sua tentativa.[/quote]

Hum … é por isso que existem essas questões: não dá só para “bater o olho” já que você precisa ler a questão com calma. Mesmo eu, com trocentos anos de prática, nem sempre consigo ver se realmente há um erro de compilação sem ler a questão com calma.

uma dica que eu do, que não é nada que melhore muioto a situação de vcs e talvez seja meio obvia… é tentar saber o que o compilador tem condições de saber, o que não tem, e prestar atenção…

exemplo:

Integer.parseInt(“one”);

o metodo pede uma string…isso dai esta certo para o compilador… ele não tem como saber que não da pra converter isso pro que isso é uma questão de lógica…

o que tiver dentro dos conceitos da linguagem mais lógicamente não vai funcionar normalmente é runtime… conversões mal feitas normalmente é runtime (dezde que vc tenha dito para o compilador tentar forçar o cast…) essas coisas…

claro que tem que conhecer um pouco, mais de forma geral isso ajuda…

[quote=rafaelsantos1983]rmalati quando for falar de Erro de Runtime, não coloque a palavra exception, pois exceções são diferentes de erros de Runtime, :wink:, só um toque.

Eu acho que para descobrir se é erro de runtime ou compilação, é complicado para quem tem pouca experiência, na minha opnião é prática. Acho que estudar para certificação(como eu tb estou fazendo) não dá apenas lendo e fazendo simulados, tem que ir para o código(conselho para quem tá iniciando em java, não usar IDE, use editores de Texto, tipo Context(free), UltraEdit(pago), e ir compilado usando o ms-dos, pois você aprende a configurar classhpath, compilar, executar, passar parâmetros, etc) e testar tudo que o que pensou.
É bom conhecer os erros de Runtime, que são os erros que você realmente precisa saber para a certificação(java 5) e resto é exception.
ClassCastException
IndexOutOfBoundException
ArithmeticException
NullPointerException

[/quote]

Conceitualmente RuntimeException também é uma Exception né, mas entendi o que você disse só pra facilitar as coisas.
São somente estas 4 classes de Runtime???

Também tinha esta duvida antes, mas depois voce vai saber diferenciar, é bem diferente!

Erro de compilação é um erro de sintaxe, você escreveu algo que a linguagem Java não reconhece.
Já Exception é bem diferente, o problema não tem erro de sintaxe, tudo está teoricamente correto, por exemplo:

se vc tem:

int[] array = new int[2];

System.out.println(array[3]);

a variável de referencia array espera receber entre colchetes um tipo primitivo inteiro(qualquer numero, positivo ou até negativo), mas o compilador não tem como verificar se aquele inteiro que voce colocou lá realmente existe no objeto array. No exemplo q eu fiz, coloquei um 3, é um inteiro válido, então o compilar não reclama, mas na hora de rodar ele vai procurar o array[3] e vai ver, NÃO EXISTE. Se voce colocar um negativo sempre dara exceção…

Tá, nao deve ter sido muito boa a explicação mas tentei 8)

[quote=“rmalati”]
Conceitualmente RuntimeException também é uma Exception né, mas entendi o que você disse só pra facilitar as coisas.
São somente estas 4 classes de Runtime???[/quote]

Pelo o que eu estou estudando e quem já fez a prova me disse que para a Java 5, só era necessário conhecer essas 4.

Não aconselho a saber apenas estas…
Tem varias outras.