Lançando Exceções

Ao escrever programas, frequentemente nos deparamos com situações em que o fluxo normal de execução precisa ser alterado devido a certas condições. Python nos fornece mecanismos para lidar com essas situações através de exceções. As exceções são eventos que podem modificar o fluxo de controle de um programa. Em Python, você pode acionar manualmente uma exceção em qualquer ponto do seu programa usando a instrução raise.
Aqui está um exemplo simples de como usar a instrução raise:
x = -1
if x < 0:
    # lança uma exceção se x for negativo
    raise Exception('x should not be negative')
Nesse programa, se o valor de x for menor que 0, uma exceção do tipo Exception é lançada com a mensagem "x should not be negative". Se você executar esse programa, ele será interrompido na instrução raise e exibirá a mensagem da exceção, como esta:
Exception: x should not be negative
Além de Exception, o Python vem com várias exceções incorporadas que você pode usar para lançar tipos mais específicos de erros. Veja como você pode lançar um ValueError:
def sqrt(n):
    if n < 0:
        # lança um ValueError se n for negativo
        raise ValueError('Square root not defined for negative numbers')
    return n ** 0.5

print(sqrt(4))    # 2.0
print(sqrt(-1))   # ValueError: Square root not defined for negative numbers
Neste exemplo, a função sqrt(n) tenta calcular a raiz quadrada do número n. No entanto, se n for negativo, ela lança um ValueError com uma mensagem específica.
Observe que quando você raise uma exceção, o fluxo do programa é interrompido. Isso é muitas vezes um comportamento desejável, pois permite sinalizar que algo inesperado ocorreu e que o programa não pode lidar com isso. O tipo específico de exceção e a mensagem fornecem mais informações sobre a natureza do erro.

Desafio: Leitor de Arquivos

Em uma grande empresa de software, existem vários arquivos de código em um diretório. Você foi solicitado a escrever uma função Python que abre um arquivo e retorna seu conteúdo. Mas ela também deve ser capaz de lidar com casos em que um arquivo não exista.
A entrada da função é o nome do arquivo.
A função deve ler e retornar o conteúdo do arquivo. No caso de o arquivo não existir, ela deve lançar um FileNotFoundError.
Entrada
Saída
existing_file.txt
Hello World
nonexistingfile.txt
File does not exist
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue