Formation F#
  • Intro
  • Bases
    • Le F♯, c'est quoi ?
    • Syntaxe
    • Premiers concepts
    • 🍔 Quiz
  • Fonctions
    • Signature
    • Fonctions
    • Fonctions standard
    • Opérateurs
    • Fonctions : compléments
    • 🍔 Quiz
    • 📜 Récap’
  • Types composites
    • Généralités
    • Tuples
    • Records
    • Unions
    • Enums
    • Records anonymes
    • Types valeur
    • 🍔 Quiz
  • Types : Compléments
    • Type unit
    • Génériques
    • Types flexibles
    • Unités de mesure
    • Conversion
    • Exceptions F#
  • Pattern matching
    • Patterns
    • Match expression
    • 🚀 Active Patterns
    • 📜 Récap’
  • Collections
    • Vue d'ensemble
    • Types
    • Fonctions génériques
    • Fonctions spécifiques
    • 🍔 Quiz
    • 📜 Récap’
  • Programmation asynchrone
    • Workflow asynchrone
    • Interop avec la TPL .NET
    • 📜 Récap’
  • Types monadiques
    • Type Option
    • Type Result
    • Smart constructor
    • 🚀 Computation expression (CE)
    • 🚀 CE - Fondements théoriques
    • 📜 Récap’
  • Module & namespace
    • Vue d'ensemble
    • Namespace
    • Module
    • 🍔 Quiz
    • 📜 Récap’
  • Orienté-objet
    • Introduction
    • Membres
    • Extensions de type
    • Classe, structure
    • Interface
    • Expression objet
    • Recommandations
  • 🦚 Aller plus loin
Propulsé par GitBook
Sur cette page

Cet article vous a-t-il été utile ?

Modifier sur GitHub
  1. Types : Compléments

Exceptions F#

F# supporte 2 types d'exception :

  1. Les exceptions .NET

  2. Les exceptions F#

Les exceptions F# sont une extension des exceptions .NET présentant 2 améliorations dans l'esprit des types union :

  • Définition succincte

  • Support du pattern matching exhaustif dans les expressions try...with

Exemple :

exception Error1 of string
exception Error2 of string * int

let function1 x y =
   try
      if x = y then raise (Error1 "x")
      else raise (Error2("x", 10))
   with
      | Error1 str -> printfn "Error1 %s" str
      | Error2(str, i) -> printfn "Error2 %s %d" str i

function1 10 10
// Error1 x

function1 9 2
// Error2 x 10

Pour comparer, voici un exemple de try...with avec une exception .NET :

let divide1 x y =
   try
      Some (x / y)
   with
      | :? System.DivideByZeroException ->
        printfn "Division by zero!"
        None

let result1 = divide1 100 0

PrécédentConversionSuivantPatterns

Dernière mise à jour il y a 1 an

Cet article vous a-t-il été utile ?

Note : les exceptions F# sont compilées en .NET de manière classique : - En tant que classes dérivant de Exception - Supportant l'égalité structurelle via l'interface IStructuralEquatable → Cf.

sharplab.io