Dans les activités de changement de travail, j'ai parfois décrit la gestion des exceptions comme un problème technique, mais je ne l'ai jamais rencontré auparavant, il s'agit donc d'un résultat
begin
#Spécifiez le code pour détecter les problèmes lors de l'exécution de programmes
#Ecrire du code susceptible de provoquer une erreur
rescue
#Décrivez comment réagir lorsqu'un problème est détecté
end
Avec un code comme celui-ci, «100/0» ne peut pas être exécuté, donc le traitement s'arrête à «réponse = 100 / nombre».
ZeroDivisionError
est l'erreur correspondante et décrit le traitement que vous souhaitez effectuer lorsque cette exception se produit.
number = 0
answer = 20 / num
puts answer
puts 2
=>`/': divided by 0 (ZeroDivisionError)
from Main.rb:4:in `<main>'
Si vous écrivez comme suit, le processus s'arrêtera car une exception se produira normalement à «100/0», mais puisque le processus de sauvetage est exécuté, le processus sera exécuté jusqu'à la fin.
puts 1
begin
#Écrivez le code que vous souhaitez détecter
number = 0
answer = 20 / num
puts answer
rescue ZeroDivisionError => e
#Décrivez le processus que vous souhaitez effectuer lorsque ZeroDivisionError se produit (enregistrer un gestionnaire d'exceptions)
p e
ensure
puts 2
end
=>
1
#<ZeroDivisionError: divided by 0>
2
Il s'agit d'un objet (variable) ZeroDivisionError qui stocke les détails de l'exception qui s'est produite. En d'autres termes, si vous affichez ceci, vous pouvez comprendre pourquoi l'erreur s'est produite.
Les objets ont divers messages et peuvent récupérer les informations nécessaires comme indiqué ci-dessous.
p e
puts e.message
p e.backtrace
=>
#<ZeroDivisionError: divided by 0>
divided by 0
["Main.rb:4:in `/'", "Main.rb:4:in `<main>'"]
Recommended Posts