[Rails] Comment écrire la gestion des exceptions?

Qu'est-ce que la gestion des exceptions?

La gestion des exceptions est le traitement lorsqu'une erreur se produit. Il est pratique d'écrire la gestion des exceptions pour identifier la cause de l'erreur et éviter les problèmes côté système.

Comment écrire la gestion des exceptions

Forme de base de commencer, de sauver

Entourez la partie susceptible d'être la cible de l'erreur par begin et écrivez le traitement lorsque l'erreur se produit lors du sauvetage.


begin
  100 / 0
rescue
  p "Ne casse pas à 0"
end

puts "Bonjour"

Écrivez avec une seule doublure

Il est également possible d'écrire avec une seule doublure.


sample_1 = 10 / 0 rescue 0

sample_2 = 10 / nil rescue 0

puts sample_1 #=>0
puts sample_2 #=>0

Obtenez le contenu de l'erreur (e)

Vous pouvez également spécifier un argument après la récupération pour stocker le contenu de l'erreur dans une variable.


begin
  10 / 0
rescue => e
  puts e #=> divided by 0
end

Branche conditionnelle pour chaque erreur

Alternativement, en spécifiant un message d'erreur après le sauvetage, Vous pouvez créer une branche conditionnelle pour décider quelle erreur prendre et que faire.


begin
  10 / 0
rescue NoMethodError
  puts "Il n'y a pas de méthode"
rescue ZeroDivisionError
  puts "Ne casse pas à 0"
end

Comment utiliser augmenter

Il est utilisé lorsque vous souhaitez générer explicitement une erreur et interrompre le processus lorsque les paramètres ne sont pas attendus ou lorsqu'un accès non autorisé se produit.


begin
  raise NoMethodError #Classe d'exception que vous souhaitez augmenter
rescue => e
  puts e
end

Il est également possible d'émettre un message d'erreur.


begin
  raise RuntimeError, "Erreur d'exécution"
rescue => e
  puts e
end

Comment utiliser retry

Si vous obtenez une erreur, vous pouvez revenir en arrière pour commencer et l'exécuter à nouveau.


num = 0
begin
  puts 10 / num
rescue ZeroDivisionError => e
  puts e
  num = 1
  retry #Exécutez à nouveau le bloc de début
end

puts "Fini"

Comment utiliser assurer

Vous pouvez écrire un traitement exécuté avec ou sans exception.


begin
  puts "Pas exception"
rescue => e
  puts e
ensure
  puts "Absolument courir ici!"
end

Recommended Posts

[Rails] Comment écrire la gestion des exceptions?
Comment écrire des rails
Comment écrire des graines de Rails
Comment écrire le routage Rails
gestion des exceptions try-catch-finally Comment utiliser java
Comment désinstaller Rails
Comment écrire docker-compose
Comment écrire Mockito
Comment écrire un fichier de migration
Rails: comment bien écrire une tâche de râteau
[Rails] Comment écrire lors de la création d'une sous-requête
[rails] Comment publier des images
Comment écrire du bon code
[Rails] Comment utiliser enum
[Rails] Comment utiliser enum
Comment rédiger un commentaire java
Comment lire les itinéraires des rails
[Refactoring] Comment écrire le routage
Comment utiliser la jonction de rails
Comment écrire Junit 5 organisé
Comment terminer le serveur de rails
[Rails] Comment utiliser la validation
[Rails] Comment désactiver les turbolinks
[Rails] Comment utiliser authenticate_user!
[Rails] Comment mettre en œuvre le scraping
[Rails] Comment faire des graines
[Rails] Comment installer simple_calendar
[Rails] Comment installer reCAPTCHA
[Rails] Comment utiliser Scope
Comment écrire une recherche de comparaison de dates dans Rails
[Rails] Comment utiliser la "devise" des gemmes
[Rails] Comment utiliser l'appareil (Remarque)
[Rails] Deux façons d'écrire form_with
[Rails] Comment utiliser les messages flash
[rails] Comment afficher les informations de base de données
Étudier Java # 6 (Comment écrire des blocs)
Comment écrire une migration du type Rails datetime au type date
[Rails] Comment empêcher la transition d'écran
Comment utiliser Ruby on Rails
Comment déployer Bootstrap sur Rails
[Rails] Comment accélérer la composition de docker
[Rails] Comment ajouter de nouvelles pages
Gestion des exceptions
[Rails] Comment installer ImageMagick (RMajick)
Comment écrire une déclaration de variable Java
[Rails] Comment installer Font Awesome
[Rails] Comment utiliser Active Storage
Comment installer jQuery dans Rails 6