Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Forma correta de escrever o try/except

Meu código está funcionando normalmente. Porém, pausei o vídeo da aula para tentar o TRY/EXCEPT verificando a documentação, antes de ver a solução do instrutor, apenas para praticar.

o meu EXCEPT ficou em uma posição diferente do código, mas funcionando, ficou válido ou tem algo errado em escrever assim ?

def escolher_opcoes():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        print(f'Você escolheu a opção {opcao_escolhida}')
    except:
        opcao_invalida()
    else:
        match opcao_escolhida:
            case 1:
                print('Cadastrar restaurante')
            case 2:
                print('Listar restaurantes')
            case 3:
                print('Ativar restaurante')
            case 4:
                finalizar_app()
            case _:
                opcao_invalida()
2 respostas

Seu código parece estar quase correto, mas há alguns detalhes que podem ser ajustados. Primeiro, recomendo especificar a exceção que você está tratando no bloco except, em vez de capturar todas as exceções genericamente. Além disso, o bloco else não é necessário nesse contexto.

Aqui está uma versão modificada do seu código:

def escolher_opcoes():
    try:
        opcao_escolhida = int(input('Escolha uma opção: '))
        print(f'Você escolheu a opção {opcao_escolhida}')
        
        match opcao_escolhida:
            case 1:
                print('Cadastrar restaurante')
            case 2:
                print('Listar restaurantes')
            case 3:
                print('Ativar restaurante')
            case 4:
                finalizar_app()
            case _:
                opcao_invalida()
    except ValueError:
        opcao_invalida()

Neste exemplo, eu substituí except: por except ValueError: para capturar apenas exceções relacionadas a problemas na conversão para inteiro. Isso ajuda a evitar a captura acidental de outros erros que podem ocorrer dentro do bloco try.

Além disso, removi o bloco else porque não há necessidade dele neste caso específico. O código dentro do bloco else será executado apenas se nenhum erro ocorrer no bloco try, e isso não parece ser o comportamento que você deseja neste contexto.

solução!

Boa explicação, compreendi. Valeu Carlos