Um erro de aplicativo é um erro de tempo de execução que não pode necessariamente ser evitado escrevendo um código livre de erros. Erros de tempo de execução podem ocorrer por uma variedade de razões. No entanto, nem todos os erros devem ser tratados como exceções em seu código. Em alguns casos, um erro de programa pode refletir uma condição de erro esperada ou de rotina. Neste caso, você pode querer evitar o uso de tratamento de exceção para lidar com o erro do programa. Em outros casos, um erro de programa reflete uma condição de erro inesperado que pode ser manipulado em seu código. Por exemplo, mesmo que você tenha verificado para garantir que existe um arquivo, ele pode ser excluído antes que você possa abri-lo, ou ele pode estar corrompido.
A falha do sistema é um erro de tempo de execução que não pode ser tratado por meio de programação de uma maneira significativa. Por exemplo, qualquer método pode lançar uma exceção OutOfMemory se o Runtime for incapaz de alocar memória adicional
O Ruby utiliza blocos para manipular exceções, todo o código contido no bloco pode ser manipulado com a instrução Rescue que previne a interrupção do programa e trata o erro, Ensure que assegura o termino da execução do bloco, Retry que executa novamente o inicio do bloco e o próprio Raise que força uma exceção. A classe Exception o ajuda a manipular os erros como por exemplo, exibindo suas mensagens.
Exception: http://www.ruby-doc.org/core-2.2.0/Exception.html
Exemplo:
Neste exemplo utilizamos os conceitos básicos de tratamento de exceção para manipular erros.
Ruby
#!/usr/bin/env ruby # Desenvolvimento Aberto # Erros.rb # Para validar instruções crie um bloco puts "Erro numero 1: \n\n" begin # Define valores numero1 = 10 numero2 = 0 # Tenta dividir por zero resultado = numero1 / numero2 # Previne o erro e imprime mensagem de erro rescue Exception => ex puts "Houve um erro: " + ex.message #Garante final da execução do bloco ensure puts "coloque algo aqui caso queira ter certeza da execução." end # Gera seu próprio erro puts "\nErro numero 2: \n\n" begin # Define valores valor1 = 5 valor2 = 6 # Raise gera um erro especifico if (valor2 > valor1) raise "Valor 2 não pode ser maior que o valor 1" end # Rescue impede a interrupção do programa e exibe mensagem rescue Exception => ex puts "Houve um erro: " + ex.message end