{"id":40177,"date":"2025-10-13T07:34:49","date_gmt":"2025-10-13T07:34:49","guid":{"rendered":"https:\/\/www.railscarma.com\/?p=40177"},"modified":"2025-10-13T07:34:52","modified_gmt":"2025-10-13T07:34:52","slug":"comment-lever-et-sauver-des-exceptions-en-ruby","status":"publish","type":"post","link":"https:\/\/www.railscarma.com\/fr\/blog\/comment-lever-et-sauver-des-exceptions-en-ruby\/","title":{"rendered":"Comment lever et sauver des exceptions en Ruby"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"40177\" class=\"elementor elementor-40177\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-feaac73 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"feaac73\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-57be5f1\" data-id=\"57be5f1\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f81e029 elementor-widget elementor-widget-text-editor\" data-id=\"f81e029\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span style=\"font-weight: 400;\">Les exceptions sont un \u00e9l\u00e9ment fondamental de la programmation en Ruby, permettant aux d\u00e9veloppeurs de g\u00e9rer les erreurs avec \u00e9l\u00e9gance et de garantir des applications robustes et tol\u00e9rantes aux pannes. Le m\u00e9canisme de gestion des exceptions de Ruby est \u00e0 la fois intuitif et puissant, permettant aux d\u00e9veloppeurs de lever des erreurs lorsque quelque chose ne va pas et de les sauver pour \u00e9viter que l'application ne tombe en panne. Dans ce guide de 2000 mots, nous allons explorer comment lever et sauver des exceptions en Ruby, en couvrant les bases, les techniques avanc\u00e9es, les meilleures pratiques et des exemples concrets.<\/span><\/p><h3><strong>Que sont les exceptions en Ruby ?<\/strong><\/h3><p>En Ruby, les exceptions sont des objets qui repr\u00e9sentent des erreurs ou des conditions inattendues au cours de l'ex\u00e9cution d'un programme. Lorsqu'une erreur survient, comme une tentative de division par z\u00e9ro, l'acc\u00e8s \u00e0 un fichier inexistant ou une d\u00e9faillance du r\u00e9seau, Ruby l\u00e8ve une exception. Si elle n'est pas g\u00e9r\u00e9e, l'exception entra\u00eene la fin du programme avec un message d'erreur.<\/p><p>Le syst\u00e8me d'exception de Ruby est construit autour de la fonction <code>Exception<\/code> qui constitue la racine de la hi\u00e9rarchie des exceptions. Des sous-classes comme <code>StandardError, RuntimeError, ArgumentError<\/code>, et <code>Pas d'erreur de m\u00e9thode<\/code> pour g\u00e9rer des types d'erreurs sp\u00e9cifiques. Les d\u00e9veloppeurs peuvent \u00e9galement d\u00e9finir des classes d'exceptions personnalis\u00e9es pour repr\u00e9senter les erreurs sp\u00e9cifiques \u00e0 une application.<\/p><p>La gestion des exceptions en Ruby s'articule autour de deux actions cl\u00e9s :<\/p><ul><li><strong>\u00c9levage<\/strong>: D\u00e9clenchement d'une exception en cas d'erreur.<\/li><li><strong>Sauvetage<\/strong>: Rattraper et g\u00e9rer les exceptions pour \u00e9viter les pannes de programme.<\/li><\/ul><p>Voyons comment lever et sauver des exceptions de mani\u00e8re efficace.<\/p><h3><strong>Lever des exceptions en Ruby<\/strong><\/h3><p>Lever une exception consiste \u00e0 signaler qu'une erreur ou une condition inattendue s'est produite. Ruby fournit la fonction <code>\u00e9lever<\/code> (et son alias <code>\u00e9chouer<\/code>) pour d\u00e9clencher des exceptions.<\/p><h4><strong>Le <\/strong><code>\u00e9lever<\/code><strong> M\u00e9thode<\/strong><\/h4><p>La mani\u00e8re la plus simple de lever une exception est d'utiliser la fonction <code>\u00e9lever<\/code> sans arguments, ce qui soul\u00e8ve un <code>Erreur d'ex\u00e9cution<\/code> (une sous-classe de <code>Erreur standard<\/code>):<\/p><pre>rubis\nlever\n# =&gt; RuntimeError : exception non g\u00e9r\u00e9e<\/pre><p>Vous pouvez \u00e9galement fournir un message d'erreur :<\/p><pre>rubis\nraise \"Quelque chose s'est mal pass\u00e9 !\"\n# =&gt; RuntimeError : Quelque chose n'a pas fonctionn\u00e9 !<\/pre><p>Pour lever une classe d'exception sp\u00e9cifique, il faut passer la classe comme premier argument et le message comme second :<\/p><pre>rubis\nraise ArgumentError, \"Entr\u00e9e invalide fournie\"\n# =&gt; ArgumentError : Entr\u00e9e invalide fournie<\/pre><h3><strong>Classes d'exceptions personnalis\u00e9es<\/strong><\/h3><p>Pour les applications plus complexes, vous pouvez d\u00e9finir des classes d'exceptions personnalis\u00e9es pour repr\u00e9senter des erreurs sp\u00e9cifiques. Les exceptions personnalis\u00e9es h\u00e9ritent de la classe <code>Erreur standard<\/code> ou l'une de ses sous-classes pour assurer la compatibilit\u00e9 avec le comportement par d\u00e9faut de Ruby en mati\u00e8re de sauvetage.<\/p><p>Exemple:<\/p><pre>ruby\nclass AuthenticationError  AuthenticationError : Informations d'identification non valides<\/pre><p>En d\u00e9finissant <code>Erreur d'authentification<\/code>vous pouvez traiter les erreurs li\u00e9es \u00e0 l'authentification s\u00e9par\u00e9ment des erreurs g\u00e9n\u00e9riques.<\/p><h3><strong>Soulever des exceptions motiv\u00e9es<\/strong><\/h3><p>Ruby permet d'attacher une \" cause \" \u00e0 une exception, ce qui est utile pour le d\u00e9bogage. La cause est l'exception originale qui a conduit \u00e0 l'exception actuelle. Utilisez l'option <code>exception<\/code> pour y acc\u00e9der :<\/p><pre>rubis\nbegin\n  raise \"Erreur d'origine\"\nrescue =&gt; e\n  raise \"Nouvelle erreur\" # L'erreur d'origine est conserv\u00e9e comme cause\nend<\/pre><p>Vous pouvez en v\u00e9rifier la cause \u00e0 l'aide de <code>e.cause<\/code>:<\/p><pre>rubis\ncommencer\n  begin\n    raise \"Erreur d'origine\"\n  rescue =&gt; e\n    raise \"Nouvelle erreur\"\n  end\nrescue =&gt; e\n  puts e.message # =&gt; Nouvelle erreur\n  puts e.cause.message # =&gt; Erreur initiale\nend<\/pre><h3><strong>Sauvetage des exceptions<\/strong><\/h3><p>Le sauvetage des exceptions vous permet d'attraper et de g\u00e9rer les erreurs de mani\u00e8re \u00e9l\u00e9gante, \u00e9vitant ainsi \u00e0 votre programme de se bloquer. Ruby utilise la fonction <code>d\u00e9but\/sauvetage<\/code> pour g\u00e9rer les exceptions.<\/p><h4><strong>Le <\/strong><code>commencer<\/code><strong>\/<\/strong><code>sauvetage<\/code><strong> Bloc<\/strong><\/h4><p>La structure de base d'un <code>d\u00e9but\/sauvetage<\/code> est un bloc :<\/p><pre>rubis\ncommencer\n  # Code susceptible de soulever une exception\nsauver\n  # G\u00e9rer l'exception\nend<\/pre><p><strong>Exemple:<\/strong><\/p><pre>rubis\nbegin\n  r\u00e9sultat = 10 \/ 0\nsauvetage\n  met \"Une erreur s'est produite !\"\nend\n# Sortie : Une erreur s'est produite !<\/pre><p>Par d\u00e9faut, <code>sauvetage<\/code> prises <code>Erreur standard<\/code> et ses sous-classes. Si vous ne sp\u00e9cifiez pas de classe d'exception, cela \u00e9quivaut \u00e0 <code>rescue StandardError<\/code>.<\/p><h3><strong>Traitement des exceptions sp\u00e9cifiques<\/strong><\/h3><p>Pour g\u00e9rer des exceptions sp\u00e9cifiques, sp\u00e9cifiez la classe d'exception dans la directive <code>sauvetage<\/code> clause :<\/p><pre>rubis\nbegin\n  result = 10 \/ 0\nrescue ZeroDivisionError\n  puts \"Impossible de diviser par z\u00e9ro !\"\nrescue ArgumentError\n  puts \"Argument non valide fourni !\"\nend\n# Sortie : Impossible de diviser par z\u00e9ro !<\/pre><p>Vous pouvez \u00e9galement capturer l'objet de l'exception pour l'examiner plus en d\u00e9tail :<\/p><pre>rubis\nbegin\n  raise ArgumentError, \"Entr\u00e9e invalide\"\nrescue ArgumentError =&gt; e\n  puts \"Erreur : #{e.message}\"\nend\n# Sortie : Erreur : Entr\u00e9e non valide<\/pre><h3><strong>En utilisant <\/strong><code>autre<\/code><strong> et <\/strong><code>garantir<\/code><\/h3><p>Ruby fournit deux clauses suppl\u00e9mentaires pour la gestion des exceptions :<\/p><ul><li><code>autre<\/code>: S'ex\u00e9cute si aucune exception n'est lev\u00e9e.<\/li><li><code>garantir<\/code>: S'ex\u00e9cute ind\u00e9pendamment de l'apparition d'une exception, ce qui est utile pour les t\u00e2ches de nettoyage.<\/li><\/ul><p>Exemple:<\/p><pre>rubis\nbegin\n  puts \"Performing operation...\"\n  result = 10 \/ 2\nrescue ZeroDivisionError\n  puts \"Impossible de diviser par z\u00e9ro !\"\nelse\n  puts \"Op\u00e9ration r\u00e9ussie : #{r\u00e9sultat}\"\nassurer\n  met \"Nettoyage...\"\nend\n# Sortie :\n# Ex\u00e9cution de l'op\u00e9ration...\n# Op\u00e9ration r\u00e9ussie : 5\n# Nettoyage...<\/pre><p>Si une exception se produit :<\/p><pre>rubis\nbegin\n  puts \"Performing operation...\"\n  result = 10 \/ 0\nrescue ZeroDivisionError\n  puts \"Impossible de diviser par z\u00e9ro !\"\nelse\n  puts \"Op\u00e9ration r\u00e9ussie : #{r\u00e9sultat}\"\nassurer\n  met \"Nettoyage...\"\nend\n# Sortie :\n# Ex\u00e9cution de l'op\u00e9ration...\n# Impossible de diviser par z\u00e9ro !\n# Nettoyage...<\/pre><h3><strong>Le <\/strong><code>r\u00e9essayer<\/code><strong> Mot-cl\u00e9<\/strong><\/h3><p>Le <code>r\u00e9essayer<\/code> Le mot-cl\u00e9 permet de r\u00e9essayer le <code>commencer<\/code> apr\u00e8s qu'une exception a \u00e9t\u00e9 lev\u00e9e. C'est utile pour des sc\u00e9narios tels que la r\u00e9it\u00e9ration de requ\u00eates r\u00e9seau qui ont \u00e9chou\u00e9.<\/p><p>Exemple:<\/p><pre>rubis\ntentatives = 0\nd\u00e9but\n  tentatives += 1\n  puts \"Tentative #{attempts}\"\n  raise \"\u00c9chec de la connexion\"\nsecours\n  r\u00e9essayer si tentatives &lt; 3\n  puts &quot;Abandon apr\u00e8s #{attempts} tentatives&quot;\nend\n# Sortie :\n# Tentative 1\n# Tentative 2\n# Tentative 3\n# Abandon apr\u00e8s 3 tentatives<\/pre><p>Utilisez les tentatives avec pr\u00e9caution pour \u00e9viter les boucles infinies.<\/p><h3><strong>Bonnes pratiques pour le traitement des exceptions<\/strong><\/h3><ol><li><strong>Exceptions sp\u00e9cifiques au sauvetage<\/strong>: \u00c9viter les objets nus <code>sauvetage<\/code> Les clauses d'exclusion, car elles englobent toutes les clauses d'exclusion. <code>Erreur standard<\/code> et peut cacher des erreurs inattendues. Pr\u00e9cisez les exceptions exactes auxquelles vous vous attendez.<pre>rubis\n# Bad\ncommencer\n  # Code\nsauvetage\n  # Attrape tout\nfin\n\n# Bon\ncommencer\n  # Code\nrescue ArgumentError, TypeError\n  # Gestion des erreurs sp\u00e9cifiques\nfin<\/pre><\/li><li><strong>Les blocs de sauvetage doivent \u00eatre de petite taille<\/strong>: Ne recouvrir que le code susceptible de soulever une exception. Cela permet d'am\u00e9liorer la lisibilit\u00e9 et d'\u00e9viter d'attraper des erreurs sans rapport avec le sujet.<\/li><li><strong>Fournir des messages d'erreur pertinents<\/strong>: Lorsque vous soulevez des exceptions, incluez des messages clairs et exploitables pour faciliter le d\u00e9bogage.<\/li><li><strong>Utiliser des exceptions personnalis\u00e9es pour la logique du domaine<\/strong>: Cr\u00e9ez des classes d'exceptions personnalis\u00e9es pour les erreurs sp\u00e9cifiques \u00e0 l'application afin de rendre votre code plus expressif et plus facile \u00e0 maintenir.<\/li><li><strong>\u00c9viter la surutilisation des exceptions pour le contr\u00f4le des flux<\/strong>: Les exceptions sont destin\u00e9es \u00e0 des cas exceptionnels, et non \u00e0 contr\u00f4ler le d\u00e9roulement du programme. Utilisez les conditionnelles pour les sc\u00e9narios attendus.<pre>rubis\n# Bad\ncommencer\nvalue = hash[:key]\nrescue\nvaleur = nil\nend\n\n# Bon\nvalue = hash[:key] || nil<\/pre><\/li><li><strong>Ressources pour le nettoyage avec <\/strong><code>garantir<\/code>: Utilisation <code>garantir<\/code> pour fermer les fichiers, les connexions \u00e0 la base de donn\u00e9es ou d'autres ressources, m\u00eame si une exception se produit.<\/li><\/ol><h3><strong>Exemples concrets<\/strong><\/h3><h4><strong>Traitement des fichiers<\/strong><\/h4><p>La lecture d'un fichier peut soulever des exceptions telles que <code>Errno::ENOENT<\/code> (fichier introuvable) ou <code>Errno::EACCES<\/code> (autorisation refus\u00e9e). Voici comment les traiter :<\/p><pre>rubis\nbegin\n  File.open(\"nonexistent.txt\", \"r\") do |file|\n    puts file.read\n  end\nrescue Errno::ENOENT\n  puts \"Fichier non trouv\u00e9 !\"\nrescue Errno::EACCES\n  met \"Permission refus\u00e9e !\"\nensure\n  met \"Op\u00e9ration de fichier termin\u00e9e\".\nend\n# Sortie : Fichier introuvable !\n# Op\u00e9ration de fichier termin\u00e9e.<\/pre><h4><strong>Appels de l'API<\/strong><\/h4><p>Lorsque vous effectuez des requ\u00eates HTTP, vous pouvez rencontrer des erreurs de r\u00e9seau ou des r\u00e9ponses non valides. L'utilisation de la fonction <code>httparty<\/code> gemme :<\/p><pre>ruby\nn\u00e9cessite 'httparty'\n\nbegin\n  response = HTTParty.get('https:\/\/api.example.com\/data')\nrescue HTTParty::Error =&gt; e\n  puts \"\u00c9chec de la requ\u00eate API : #{e.message}\"\nrescue SocketError\n  puts \"Erreur de r\u00e9seau : Impossible de se connecter au serveur\"\nelse\n  puts \"R\u00e9ponse re\u00e7ue : #{response.body}\"\nfin<\/pre><h4><strong>Gestion personnalis\u00e9e des exceptions dans une classe<\/strong><\/h4><p>Voici un exemple de classe qui traite les paiements et utilise des exceptions personnalis\u00e9es :<\/p><pre>ruby\nclass PaymentError &lt; StandardError ; end\nclass InsufficientFundsError &lt; PaymentError ; end\nclass InvalidCardError  card.balance\n    card.balance -= amount\n    puts \"Le paiement de #{montant} a \u00e9t\u00e9 trait\u00e9 avec succ\u00e8s\"\n  fin\n\n  private\n  def valid_card ?(card)\n    card.number.length == 16\n  end\nend\n\nclasse Carte\n  attr_accessor :nombre, :solde\n  def initialize(number, balance)\n    @number = nombre\n    @balance = balance\n  end\nfin\n\ncard = Card.new(\"1234567890123456\", 50)\nprocesseur = PaymentProcessor.new\n\nbegin\n  processor.process_payment(100, card)\nrescue InsufficientFundsError =&gt; e\n  met \"Erreur : #{e.message}\"\nrescue InvalidCardError =&gt; e\n  met \"Erreur : #{e.message}\"\nend\n# Sortie : Erreur : Pas assez de fonds<\/pre><h3><strong>Gestion avanc\u00e9e des exceptions<\/strong><\/h3><h4><strong>Sauvegardes embo\u00eet\u00e9es<\/strong><\/h4><p>Vous pouvez nicher <code>d\u00e9but\/sauvetage<\/code> pour g\u00e9rer les exceptions \u00e0 diff\u00e9rents niveaux :<\/p><pre>rubis\ncommencer\n  begin\n    raise \"Erreur interne\"\n  rescue\n    met \"Erreur interne\"\n    raise \"Erreur ext\u00e9rieure\"\n  end\nsauvetage\n  puts \"Erreur ext\u00e9rieure d\u00e9tect\u00e9e\"\nfin\n# Sortie :\n# Erreur interne d\u00e9tect\u00e9e\n# Erreur ext\u00e9rieure d\u00e9tect\u00e9e<\/pre><h4><strong>Hi\u00e9rarchie des exceptions<\/strong><\/h4><p>Il est essentiel de comprendre la hi\u00e9rarchie des exceptions de Ruby. Les classes cl\u00e9s sont les suivantes :<\/p><ul><li><code>ExceptionM<\/code>: Classe racine pour toutes les exceptions.<\/li><li><code>Erreur standard<\/code>: Valeur par d\u00e9faut pour <code>sauvetage<\/code> sans classe ; la plupart des exceptions int\u00e9gr\u00e9es en h\u00e9ritent.<\/li><li><code>Erreur d'ex\u00e9cution<\/code>: Valeur par d\u00e9faut pour <code>\u00e9lever<\/code> sans classe.<\/li><li><code>NoMethodError, ArgumentError, TypeError<\/code>etc. : types d'erreurs sp\u00e9cifiques.<\/li><\/ul><p>Pour attraper toutes les exceptions (y compris les exceptions non<code>Erreur standard<\/code> comme <code>Sortie du syst\u00e8me<\/code>), utiliser <code>sauver l'exception<\/code>:<\/p><pre>rubis\ncommencer\n  exit\nsauver l'exception\n  met \"Sortie prise\"\nend\n# Sortie : Sortie captur\u00e9e<\/pre><h4><strong>En utilisant <\/strong><code>rescue_from<\/code><strong> dans Rails<\/strong><\/h4><p>Dans Ruby on Rails, vous pouvez utiliser <code>rescue_from<\/code> dans les contr\u00f4leurs pour g\u00e9rer les exceptions de mani\u00e8re globale :<\/p><pre>ruby\nclasse ApplicationController &lt; ActionController::Base\n  rescue_from ActiveRecord::RecordNotFound, with : :not_found\n\n  private\n\n  def not_found\n    render file : &#039;public\/404.html&#039;, status : :not_found\n  end\nend<\/pre><p>Cette approche centralise la gestion des exceptions pour des contr\u00f4leurs sp\u00e9cifiques.<\/p><h3><strong>Les pi\u00e8ges \u00e0 \u00e9viter<\/strong><\/h3><ol><li><strong>Rattraper toutes les exceptions \u00e0 l'aveugle<\/strong>: Utilisation <code>sauvetage<\/code> sans sp\u00e9cifier de classe d'exception peut cacher des bogues.<\/li><li><strong>Surutilisation <\/strong><code>r\u00e9essayer<\/code>: Le fait de r\u00e9essayer ind\u00e9finiment peut conduire \u00e0 des boucles infinies ou masquer des probl\u00e8mes sous-jacents.<\/li><li><strong>Ignorer les d\u00e9tails de l'exception<\/strong>: Inspectez toujours l'objet de l'exception (<code>e.message, e.backtrace<\/code>) pour le d\u00e9bogage.<\/li><li><strong>Lev\u00e9e des erreurs non standard<\/strong>: \u00c9viter de soulever des exceptions qui n'h\u00e9ritent pas de <code>Erreur standard<\/code>Ils ne seront pas pris en compte par d\u00e9faut. <code>sauvetage<\/code> clauses.<\/li><li><strong>Ne pas nettoyer les ressources<\/strong>: Oublier d'utiliser <code>garantir<\/code> peut laisser des fichiers ou des connexions ouverts.<\/li><\/ol><h2><strong>Conclusion<\/strong><\/h2><p>Lever et sauver des exceptions en Ruby est un moyen puissant de g\u00e9rer les erreurs et de construire des applications robustes. A l'adresse <strong>RailsCarma<\/strong>, l'un des principaux <a href=\"https:\/\/www.railscarma.com\/fr\">Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails<\/a>Nous utilisons ces techniques pour cr\u00e9er des solutions fiables et faciles \u00e0 maintenir. En utilisant les <code>\u00e9lever<\/code> pour signaler des erreurs, <code>sauvetage<\/code> pour les attraper, et des outils tels que <code>r\u00e9essayer, sinon<\/code>, et <code>garantir<\/code>Gr\u00e2ce aux exceptions, les d\u00e9veloppeurs peuvent g\u00e9rer les erreurs de mani\u00e8re efficace. Les classes d'exceptions personnalis\u00e9es et les clauses de sauvetage sp\u00e9cifiques ajoutent de la clart\u00e9 et de la pr\u00e9cision \u00e0 votre code. Le respect des meilleures pratiques, telles que le sauvetage d'exceptions sp\u00e9cifiques, la r\u00e9duction de la taille des blocs de sauvetage et l'utilisation de messages d'erreur significatifs, garantit la maintenance et la fiabilit\u00e9 du code.<\/p><p>Qu'il s'agisse d'op\u00e9rations sur des fichiers, d'appels d'API ou de logique sp\u00e9cifique \u00e0 un domaine, le syst\u00e8me de gestion des exceptions de Ruby offre la flexibilit\u00e9 n\u00e9cessaire pour traiter les erreurs avec \u00e9l\u00e9gance. En ma\u00eetrisant ces techniques et en \u00e9vitant les pi\u00e8ges les plus courants, RailsCarma aide les entreprises \u00e0 cr\u00e9er des applications Ruby r\u00e9silientes qui g\u00e8rent les erreurs en toute confiance.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t  <div class=\"related-post slider\">\r\n        <div class=\"headline\">Articles Similaires<\/div>\r\n    <div class=\"post-list owl-carousel\">\r\n\r\n            <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Ruby on Rails pour MLOps : un guide complet pour le d\u00e9ploiement de ML\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ruby-on-rails-for-mlops-a-complete-guide-to-ml-deployment\/?related_post_from=41350\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps.png\" class=\"attachment-full size-full wp-post-image\" alt=\"Ruby on Rails pour MLOps\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Ruby-on-Rails-for-MLOps-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Ruby on Rails pour MLOps : un guide complet pour le d\u00e9ploiement de ML\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/ruby-on-rails-for-mlops-a-complete-guide-to-ml-deployment\/?related_post_from=41350\">\r\n        Ruby on Rails pour MLOps : un guide complet pour le d\u00e9ploiement de ML  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Construire des applications d&#039;IA agentique avec Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/building-agentic-ai-applications-with-ruby-on-rails\/?related_post_from=41339\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails.png\" class=\"attachment-full size-full wp-post-image\" alt=\"Applications d&#039;IA agentique avec Ruby on Rails\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/05\/Building-Agentic-AI-Applications-with-Ruby-on-Rails-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Construire des applications d&#039;IA agentique avec Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/building-agentic-ai-applications-with-ruby-on-rails\/?related_post_from=41339\">\r\n        Construire des applications d'IA agentique avec Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Qu&#039;est-ce que Offliberty Ruby Gem et comment fonctionne-t-il ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/quest-ce-que-offliberty-ruby-gem-et-comment-fonctionne-t-il\/?related_post_from=41304\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works.png\" class=\"attachment-full size-full wp-post-image\" alt=\"Offliberty Ruby Gem\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/What-is-Offliberty-Ruby-Gem-and-How-It-Works-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Qu&#039;est-ce que Offliberty Ruby Gem et comment fonctionne-t-il ?\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/quest-ce-que-offliberty-ruby-gem-et-comment-fonctionne-t-il\/?related_post_from=41304\">\r\n        Qu'est-ce que Offliberty Ruby Gem et comment fonctionne-t-il ?  <\/a>\r\n\r\n        <\/div>\r\n              <div class=\"item\">\r\n            <div class=\"thumb post_thumb\">\r\n    <a  title=\"Comment construire une plateforme SaaS \u00e9volutive en utilisant Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/?related_post_from=41273\">\r\n\r\n      <img decoding=\"async\" width=\"800\" height=\"300\" src=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails.png\" class=\"attachment-full size-full wp-post-image\" alt=\"Construire une plateforme SaaS avec Ruby on Rails\" srcset=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails.png 800w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails-300x113.png 300w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails-768x288.png 768w, https:\/\/www.railscarma.com\/wp-content\/uploads\/2026\/04\/Build-a-SaaS-Platform-Using-Ruby-on-Rails-18x7.png 18w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/>\r\n\r\n    <\/a>\r\n  <\/div>\r\n\r\n  <a class=\"title post_title\"  title=\"Comment construire une plateforme SaaS \u00e9volutive en utilisant Ruby on Rails\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/?related_post_from=41273\">\r\n        Comment construire une plateforme SaaS \u00e9volutive en utilisant Ruby on Rails  <\/a>\r\n\r\n        <\/div>\r\n      \r\n  <\/div>\r\n\r\n  <script>\r\n      <\/script>\r\n  <style>\r\n    .related-post {}\r\n\r\n    .related-post .post-list {\r\n      text-align: left;\r\n          }\r\n\r\n    .related-post .post-list .item {\r\n      margin: 10px;\r\n      padding: 10px;\r\n          }\r\n\r\n    .related-post .headline {\r\n      font-size: 14px !important;\r\n      color: #999999 !important;\r\n          }\r\n\r\n    .related-post .post-list .item .post_thumb {\r\n      max-height: 220px;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n          }\r\n\r\n    .related-post .post-list .item .post_title {\r\n      font-size: 14px;\r\n      color: #000000;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .post-list .item .post_excerpt {\r\n      font-size: 12px;\r\n      color: #3f3f3f;\r\n      margin: 10px 0px;\r\n      padding: 0px;\r\n      display: block;\r\n      text-decoration: none;\r\n          }\r\n\r\n    .related-post .owl-dots .owl-dot {\r\n          }\r\n\r\n      <\/style>\r\n      <script>\r\n      jQuery(document).ready(function($) {\r\n        $(\".related-post .post-list\").owlCarousel({\r\n          items: 2,\r\n          responsiveClass: true,\r\n          responsive: {\r\n            0: {\r\n              items: 1,\r\n            },\r\n            768: {\r\n              items: 2,\r\n            },\r\n            1200: {\r\n              items: 2,\r\n            }\r\n          },\r\n                      rewind: true,\r\n                                loop: true,\r\n                                center: false,\r\n                                autoplay: true,\r\n            autoplayHoverPause: true,\r\n                                nav: true,\r\n            navSpeed: 1000,\r\n            navText: ['<i class=\"fas fa-chevron-left\"><\/i>', '<i class=\"fas fa-chevron-right\"><\/i>'],\r\n                                dots: false,\r\n            dotsSpeed: 1200,\r\n                                                    rtl: false,\r\n          \r\n        });\r\n      });\r\n    <\/script>\r\n  <\/div>","protected":false},"excerpt":{"rendered":"<p>Exceptions are a fundamental part of programming in Ruby, allowing developers to handle errors gracefully and ensure robust, fault-tolerant applications. Ruby\u2019s exception-handling mechanism is intuitive yet powerful, enabling developers to raise errors when something goes wrong and rescue them to prevent application crashes. In this 2000-word guide, we\u2019ll explore how to raise and rescue exceptions &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/how-to-build-a-scalable-saas-platform-using-ruby-on-rails\/\"> <span class=\"screen-reader-text\">Comment construire une plateforme SaaS \u00e9volutive en utilisant Ruby on Rails<\/span> Lire la suite \u00bb<\/a><\/p>","protected":false},"author":11,"featured_media":40195,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1224],"tags":[],"class_list":["post-40177","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Raise and Rescue Exceptions in Ruby - RailsCarma<\/title>\n<meta name=\"description\" content=\"How to raise and Rescue Exceptions in Ruby: A guide to handling errors effectively and building robust Ruby applications.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.railscarma.com\/fr\/blog\/comment-lever-et-sauver-des-exceptions-en-ruby\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Raise and Rescue Exceptions in Ruby - RailsCarma\" \/>\n<meta property=\"og:description\" content=\"How to raise and Rescue Exceptions in Ruby: A guide to handling errors effectively and building robust Ruby applications.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.railscarma.com\/fr\/blog\/comment-lever-et-sauver-des-exceptions-en-ruby\/\" \/>\n<meta property=\"og:site_name\" content=\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/RailsCarma\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-13T07:34:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-13T07:34:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"ashish\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@railscarma\" \/>\n<meta name=\"twitter:site\" content=\"@railscarma\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"ashish\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/\"},\"author\":{\"name\":\"ashish\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/9699b14852b308edfeb03096b33c7a7a\"},\"headline\":\"How to Raise and Rescue Exceptions in Ruby\",\"datePublished\":\"2025-10-13T07:34:49+00:00\",\"dateModified\":\"2025-10-13T07:34:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/\"},\"wordCount\":990,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png\",\"articleSection\":[\"Blogs\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/\",\"url\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/\",\"name\":\"How to Raise and Rescue Exceptions in Ruby - RailsCarma\",\"isPartOf\":{\"@id\":\"https:\/\/www.railscarma.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png\",\"datePublished\":\"2025-10-13T07:34:49+00:00\",\"dateModified\":\"2025-10-13T07:34:52+00:00\",\"description\":\"How to raise and Rescue Exceptions in Ruby: A guide to handling errors effectively and building robust Ruby applications.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png\",\"width\":800,\"height\":300,\"caption\":\"Raise and Rescue Exceptions in Ruby\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.railscarma.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Raise and Rescue Exceptions in Ruby\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.railscarma.com\/#website\",\"url\":\"https:\/\/www.railscarma.com\/\",\"name\":\"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development\",\"description\":\"RailsCarma is a Ruby on Rails Development Company in Bangalore. We specialize in Offshore Ruby on Rails Development based out in USA and India. Hire experienced Ruby on Rails developers for the ultimate Web Experience.\",\"publisher\":{\"@id\":\"https:\/\/www.railscarma.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.railscarma.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.railscarma.com\/#organization\",\"name\":\"RailsCarma\",\"url\":\"https:\/\/www.railscarma.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"contentUrl\":\"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png\",\"width\":200,\"height\":46,\"caption\":\"RailsCarma\"},\"image\":{\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/RailsCarma\/\",\"https:\/\/x.com\/railscarma\",\"https:\/\/www.linkedin.com\/company\/railscarma\/\",\"https:\/\/myspace.com\/railscarma\",\"https:\/\/in.pinterest.com\/railscarma\/\",\"https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/9699b14852b308edfeb03096b33c7a7a\",\"name\":\"ashish\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/204411c7d72714bc32d5ac6398e0596896318386bd537860fdd14ce905a79e07?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/204411c7d72714bc32d5ac6398e0596896318386bd537860fdd14ce905a79e07?s=96&d=mm&r=g\",\"caption\":\"ashish\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comment lever et sauver des exceptions en Ruby - RailsCarma","description":"Comment lever et sauver des exceptions en Ruby : Un guide pour g\u00e9rer efficacement les erreurs et construire des applications Ruby robustes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.railscarma.com\/fr\/blog\/comment-lever-et-sauver-des-exceptions-en-ruby\/","og_locale":"fr_FR","og_type":"article","og_title":"How to Raise and Rescue Exceptions in Ruby - RailsCarma","og_description":"How to raise and Rescue Exceptions in Ruby: A guide to handling errors effectively and building robust Ruby applications.","og_url":"https:\/\/www.railscarma.com\/fr\/blog\/comment-lever-et-sauver-des-exceptions-en-ruby\/","og_site_name":"RailsCarma - Ruby on Rails Development Company specializing in Offshore Development","article_publisher":"https:\/\/www.facebook.com\/RailsCarma\/","article_published_time":"2025-10-13T07:34:49+00:00","article_modified_time":"2025-10-13T07:34:52+00:00","og_image":[{"width":800,"height":300,"url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png","type":"image\/png"}],"author":"ashish","twitter_card":"summary_large_image","twitter_creator":"@railscarma","twitter_site":"@railscarma","twitter_misc":{"\u00c9crit par":"ashish","Dur\u00e9e de lecture estim\u00e9e":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#article","isPartOf":{"@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/"},"author":{"name":"ashish","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/9699b14852b308edfeb03096b33c7a7a"},"headline":"How to Raise and Rescue Exceptions in Ruby","datePublished":"2025-10-13T07:34:49+00:00","dateModified":"2025-10-13T07:34:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/"},"wordCount":990,"commentCount":0,"publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png","articleSection":["Blogs"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/","url":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/","name":"Comment lever et sauver des exceptions en Ruby - RailsCarma","isPartOf":{"@id":"https:\/\/www.railscarma.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage"},"image":{"@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage"},"thumbnailUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png","datePublished":"2025-10-13T07:34:49+00:00","dateModified":"2025-10-13T07:34:52+00:00","description":"Comment lever et sauver des exceptions en Ruby : Un guide pour g\u00e9rer efficacement les erreurs et construire des applications Ruby robustes.","breadcrumb":{"@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#primaryimage","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2025\/10\/How-to-Raise-and-Rescue-Exceptions-in-Ruby.png","width":800,"height":300,"caption":"Raise and Rescue Exceptions in Ruby"},{"@type":"BreadcrumbList","@id":"https:\/\/www.railscarma.com\/blog\/how-to-raise-and-rescue-exceptions-in-ruby\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.railscarma.com\/"},{"@type":"ListItem","position":2,"name":"How to Raise and Rescue Exceptions in Ruby"}]},{"@type":"WebSite","@id":"https:\/\/www.railscarma.com\/#website","url":"https:\/\/www.railscarma.com\/","name":"RailsCarma - Soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails sp\u00e9cialis\u00e9e dans le d\u00e9veloppement offshore","description":"RailsCarma est une soci\u00e9t\u00e9 de d\u00e9veloppement Ruby on Rails \u00e0 Bangalore. Nous sommes sp\u00e9cialis\u00e9s dans le d\u00e9veloppement offshore Ruby on Rails, bas\u00e9s aux \u00c9tats-Unis et en Inde. Embauchez des d\u00e9veloppeurs Ruby on Rails exp\u00e9riment\u00e9s pour une exp\u00e9rience Web ultime.","publisher":{"@id":"https:\/\/www.railscarma.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.railscarma.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.railscarma.com\/#organization","name":"RailsCarma","url":"https:\/\/www.railscarma.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","contentUrl":"https:\/\/www.railscarma.com\/wp-content\/uploads\/2020\/08\/railscarma_logo.png","width":200,"height":46,"caption":"RailsCarma"},"image":{"@id":"https:\/\/www.railscarma.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/RailsCarma\/","https:\/\/x.com\/railscarma","https:\/\/www.linkedin.com\/company\/railscarma\/","https:\/\/myspace.com\/railscarma","https:\/\/in.pinterest.com\/railscarma\/","https:\/\/www.youtube.com\/channel\/UCx3Wil-aAnDARuatTEyMdpg"]},{"@type":"Person","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/9699b14852b308edfeb03096b33c7a7a","name":"ashish","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.railscarma.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/204411c7d72714bc32d5ac6398e0596896318386bd537860fdd14ce905a79e07?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/204411c7d72714bc32d5ac6398e0596896318386bd537860fdd14ce905a79e07?s=96&d=mm&r=g","caption":"ashish"}}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts\/40177","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/comments?post=40177"}],"version-history":[{"count":0,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/posts\/40177\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media\/40195"}],"wp:attachment":[{"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/media?parent=40177"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/categories?post=40177"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.railscarma.com\/fr\/wp-json\/wp\/v2\/tags?post=40177"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}