Caso eu for criar uma exception qualquer, quando devo extender de Exception ou RuntimeException ? pode dar exemplos de cenários para as duas ?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Caso eu for criar uma exception qualquer, quando devo extender de Exception ou RuntimeException ? pode dar exemplos de cenários para as duas ?
RuntimeException são exceções que podem ser evitadas fazendo uma verificação antes.
Ex.:NullPointerException: se você fizer um if variavel == null, dá para evitá-la.
Um outro exemplo, digamos que você tenha um sistema bancário com um método "sacar".Nela você poderia jogar uma exceção SaldoInsuficienteException que estende RuntimeException caso o saldo seja insuficiente. Ela poderia ser evitada checando o saldo do usuário antes de invocar o sacar.
Já Exception são exceções que não tem como evitar. Ex.: SQLException: você não tem como estar 100% seguro de que não vai dar problema na conexão com o banco de dados, por isso é essencial fazer catch para tomar uma atitude.