Duvida sobre try/catch

Eu fiz um código que tem variáveis inteiras e strings porém queria saber se tem como eu colocar um erro usando o try catch para que as varieis inteiras acusem que o indivíduo colocou uma letra onde deveria ser números, porém tirando da análise do try catch as variáveis de tipo string.
Tem como?
ex
try{
digite seu nome
//usuario digita um nome
digite um número
//usuário digita uma letra ou seja usa de forma incorreta
}
catch(NumberFormatException erro [e no caso ele não faria esse teste para a variável nome]){
}

Veja esse video Exceptions: try, catch

1 curtida

Olá Cristian.
Pode fazer usando regex e lançando uma exception no try. Nessa regex o D vai pegar qualquer coisa que não seja um dígito entre 0 e 9.

String s = "4ABcde456";
static void method(String s) throws IllegalArgumentException {
    try {
        if (s.matches(".*\\D+.*")) {
            throw new IllegalArgumentException("Parametro invalido!");
        }
        else {
            System.out.println(s);
        }
    } catch(IllegalArgumentException e){
        System.out.println(e);
    }
}
1 curtida

vamos la

se vc tem variaveis strings e esta lendo strings, dificilmente vc vai ter um NumberFormatException

é tudo uma questão de organização. vc pode ter um unico try / catch para todos os seus procedimentos, vc pode ter try/ catch minimos onde só cabe aquilo que pode dar erro, ou pode ter try/ catch nenhum e quem invocou esse codigo q lide com isso.

por exemplo, NumberFormatException é uma RuntimeException. vc não é obrigado a tratar com try/catch, vc trata pq sabe q vai dar ruim se alguem digitar idade “chuchu”.

mas vc vai tratar como? vai mandar uma mensagem “MEU CONSAGRADO, VC DIGITOU UM NUMERO ERRADO, PODE DIGITAR DE NOVO POR GENTILEZA?”

Vc vai pedir em loop, indefinidamente? vai abortar o programa? se eu digitei o numero errado eu preciso repetir TUDO ou apenas o que eu errei?

vejamos:

  1. se vc vai obrigar o cara a repetir tudo, vale um try/catch gigante
  2. se vc vai obrigar o cara a repeter uma coisa errada, vale varios pequenos try/catch
  3. se vc vai abortar o programa, talvez nem valha a pena ter um try/catch

o try catch vai tentar pegar uma exception. se vc tem dentro um procedimento q não lança nada, ta sussa

1 curtida

Valeu, de todas a tua resposta ficou mais didática

Sou iniciante em java, quando comecei a procurar um pouco sobre regex eu apanhei e depois apareceu a resposta do carinha ali embaixo, de qualquer forma.
Obrigado!

Valeu!

1 curtida