Alguém me explica direito por favor diferença entre tempo de compilação e tempo de execução.
O que eu entendi é que os erros dados em tempo de compilação não se deixa nem o programa rodar, mas em tempo de execução eles podem ser tratados com exceptions.
Tempo de compilacao eh quando voce manda o compilador compilar o teu programa, para criar o binario…
Tempo de execucao eh quando o teu programa ja foi compilado e esta sendo executado pelo usuario.
Ou seja: checked exceptions ( como IOException e deviradas, por exemplo ) sao tratadas em tempo de compilacao pelo compilador… ja exceptions derivadas de RuntimeException, como IndexOutOfBoundsException, NullPointerException e afins, sao descobertas - caso existam, claro - em tempo de execucao ( quando voce esta usando o programa ).
Isso vale para qualquer caso, nao somente exceptions… “design time” e 'runtime" da para considerar como equivalentes para “tempo de compilacao” e “tempo de execucao”, apesar de nao ser exatamente a mesma coisa… mas da pra pegar a ideia