[RAILS] [Ruby] Gestion des exceptions dans les fonctions

introduction

Cet article est un complément à de nombreux traitements d'exceptions. Plus précisément, je laisserai le résultat de la vérification du modèle non introduit dans l'article.

environnement

Utilisation dans les fonctions

Dans la fonction, vous pouvez écrire comme suit.

def method
  puts "hoge"
  a = 1 / 0
rescue ZeroDivisionError
  puts $!
end

C'est une forme qui omet le début et la fin. Dans le cas d'une telle forme

a = 1 / 0

Cela va de soi qui provoquera une erreur. Mais si:

def method
  #Traitement énorme 1
  #Traitement susceptible de provoquer une erreur
  #Traitement énorme 2
rescue StandardError
  puts $!
end

Au fait, il est peu probable que la personne qui voit ce code puisse voir immédiatement le traitement susceptible de provoquer une erreur. Dans ce cas, je pense que vous devriez oser écrire le début et la fin.

def method
  #Traitement énorme 1
  begin
    #Traitement susceptible de provoquer une erreur
  rescue StandardError
    puts $!
  end
  #Traitement énorme 2
end

De cette façon, vous pouvez voir où l'erreur est susceptible de se produire et vous n'avez pas à faire défiler beaucoup pour voir le sauvetage. En passant, si vous revenez avec sauvetage, l'énorme quantité de processus 2 ne sera pas traitée, donc si vous voulez vraiment qu'il soit traité, mettez-le en sécurité.

def method
  #Traitement énorme 1
  begin
    #Traitement susceptible de provoquer une erreur
  rescue StandardError
    puts $!
    return
  ensure
    #Traitement énorme 2(Traité même si le sauvetage est de retour)
  end
end

S'il existe plusieurs processus susceptibles de provoquer une erreur, il est simple de les écrire tous ensemble à la fin de la fonction. L'écriture commencer, sauver, finir à chaque fois réduira la lisibilité. Tout va bien.

def method
  #Traitement susceptible de provoquer diverses erreurs

  #Autre traitement

rescue ZeroDivisionError, ArgumentError
  puts $!
rescue StandardError
  puts $!
  puts $@
end

Au fait, si vous écrivez d'abord StandardError, ce type s'occupera de la plupart des erreurs. Commençons donc par la classe enfant.

Recommended Posts

[Ruby] Gestion des exceptions dans les fonctions
gestion des exceptions ruby
Gestion des exceptions Ruby
À propos de la gestion des exceptions Ruby
Techniques de gestion des exceptions en Java
Gestion des exceptions
Exception de traitement des exceptions
À propos de la gestion des exceptions
À propos de la gestion des exceptions
[Ruby] Traitement des exceptions, le cas échéant, restituer
[Java] Gestion des exceptions
Lourd en rubis! ??
Conseils pour la gestion des erreurs de gRPC dans Ruby
☾ Java / Gestion des exceptions
À propos de la gestion des exceptions Java
Gestion des exceptions Java
Questions sur la gestion des exceptions Java throw et try-catch
Pratique de gestion des exceptions (ArithmeticException)
Fonctions Azure en Java
Gestion des exceptions Spring Boot
Triangle de sortie en Ruby
Gestion des erreurs avec Graphql-ruby
Types de variables dans ruby
Popcount rapide en Ruby
Traitement de la date et de l'heure en Ruby. Utilisez correctement la date et l'heure.
ABC177-Résoudre E avec Ruby
Classes nécessitant une gestion des exceptions
Valider les jetons JWT dans Ruby
Première gestion des exceptions de Java (mémoire)
[Java] Pratique de la gestion des exceptions [Exception]
Écrire l'héritage de classe dans Ruby
[Java] À propos de la gestion des exceptions try-catch
Entiers qui sont unifiés en entiers dans Ruby 2.4
Utilisez des variables ruby en javascript.
Règles d'utilisation pour la gestion des exceptions Java
Multiplication dans un tableau Ruby
À propos des expressions régulières dans Ruby
Créer des fonctions Azure en Java
Gestion du début et de la fin de ligne dans les expressions régulières dans Ruby
NCk mod p dans Ruby
Résolution avec Ruby AtCoder 1er test pratique de l'algorithme Une gestion des exceptions
Tirez parti de l'un ou l'autre pour la gestion des exceptions individuelles dans l'API Java Stream
Comment itérer indéfiniment en Ruby
[Session d'étude interne] Gestion des exceptions Java (2017/04/26)
Obtenez un affichage délimité à 3 chiffres en Ruby