Scala for Backend Engineering & Functional Programming · Leçon

Try, Success, Failure

Gestion des exceptions

Leçon 2 sur 413 étapes

Try, Success, Failure est une leçon Scala for Backend Engineering & Functional Programming gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Scala for Backend Engineering & Functional Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Scala for Backend Engineering & Functional Programming comprend 4 leçons au total.

Qu’est-ce que Try ?

Try[T] représente un calcul qui peut soit produire une valeur, soit lever une exception. Il possède deux sous-types :

  • Success[T] contient un résultat normal.
  • Failure contient un Throwable.

Il transforme le code susceptible de lever des exceptions en une valeur que vous pouvez composer.

Importer Try

Try se trouve dans scala.util. Vous placez toute expression susceptible de lever une exception dans Try { ... }, qui intercepte pour vous les exceptions non fatales.

import scala.util.Try

@main def run(): Unit = {
  val ok = Try(10 / 2)
  val bad = Try(10 / 0)
  println(ok)
  println(bad)
}

Success et Failure

Un Try qui s’achève normalement est un Success contenant la valeur ; un Try qui lève une exception devient un Failure contenant l’exception.

import scala.util.{Try, Success, Failure}

@main def run(): Unit = {
  val result = Try("123".toInt)
  result match {
    case Success(n) => println(s"parsed: $n")
    case Failure(e) => println(s"failed: ${e.getMessage}")
  }
}

Correspondance de motifs sur les échecs

Lorsque le code encapsulé lève une exception, vous pouvez examiner cette exception dans Failure. Ici, une analyse incorrecte est capturée proprement.

import scala.util.{Try, Success, Failure}

@main def run(): Unit = {
  val result = Try("abc".toInt)
  result match {
    case Success(n) => println(s"got $n")
    case Failure(e) => println(s"error type: ${e.getClass.getSimpleName}")
  }
}

getOrElse avec Try

getOrElse renvoie la valeur en cas de réussite ou une valeur par défaut lorsque le Try a échoué. Cela évite complètement de lever une exception.

import scala.util.Try

@main def run(): Unit = {
  val n = Try("oops".toInt).getOrElse(-1)
  println(n)
}

map sur Try

map transforme une valeur Success. Si la valeur d’origine est un Failure ou si la fonction de transformation lève une exception, le résultat reste un Failure.

import scala.util.Try

@main def run(): Unit = {
  val doubled = Try("21".toInt).map(_ * 2)
  val failed  = Try("x".toInt).map(_ * 2)
  println(doubled)
  println(failed)
}

recover : gérer l’exception

recover vous permet de transformer un Failure en Success en traitant certaines exceptions avec une fonction partielle.

import scala.util.Try

@main def run(): Unit = {
  val safe = Try("x".toInt).recover {
    case _: NumberFormatException => 0
  }
  println(safe)
}

recoverWith

recoverWith fonctionne comme recover, mais le gestionnaire renvoie un autre Try au lieu d’une simple valeur. Utilisez-le lorsque la récupération elle-même peut échouer.

import scala.util.Try

@main def run(): Unit = {
  val result = Try("x".toInt).recoverWith {
    case _: NumberFormatException => Try("42".toInt)
  }
  println(result)
}

toEither et toOption

Try se convertit proprement vers d’autres types d’erreur :

  • toOption : Success devient Some et Failure devient None.
  • toEither : Success devient Right et Failure devient Left(throwable).
import scala.util.Try

@main def run(): Unit = {
  println(Try("5".toInt).toOption)
  println(Try("x".toInt).toOption)
  println(Try("5".toInt).toEither.isRight)
}

Enchaîner avec flatMap

flatMap enchaîne des calculs qui renvoient chacun un Try. Si une étape échoue, toute la chaîne s’arrête immédiatement sur ce Failure.

import scala.util.Try

object Main {
  def half(n: Int): Try[Int] = Try(if (n % 2 == 0) n / 2 else throw new RuntimeException("odd"))

  def main(args: Array[String]): Unit = {
    println(Try("8".toInt).flatMap(half))
    println(Try("7".toInt).flatMap(half))
  }
}

Try ou try/catch

Try transforme les exceptions en valeurs, ce qui vous permet d’utiliser map, flatMap et de combiner les résultats sans blocs try/catch imbriqués. Il n’intercepte que les exceptions non fatales ; les erreurs graves comme OutOfMemoryError continuent de se propager.

Vérification rapide

Vérifiez vos connaissances sur Try.

Récapitulatif

Vous avez appris à gérer les exceptions avec Try :

  • Try { ... } capture les exceptions non fatales sous forme de Failure et les résultats normaux sous forme de Success.
  • Transformez avec map/flatMap ; récupérez les échecs avec recover/recoverWith.
  • Fournissez des valeurs par défaut avec getOrElse.
  • Convertissez avec toOption et toEither.
Gratuit pour commencer

Apprends Scala avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
39
Leçons
143

Questions Fréquemment Posées

La leçon « Try, Success, Failure » est-elle gratuite ?

Oui — le texte complet de « Try, Success, Failure » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Scala for Backend Engineering & Functional Programming, passe à CoddyKit PRO. Le cours Scala for Backend Engineering & Functional Programming comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Try, Success, Failure » ?

Gestion des exceptions Tu pratiques Scala for Backend Engineering & Functional Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Scala for Backend Engineering & Functional Programming ?

Aucune expérience préalable n'est requise. Scala for Backend Engineering & Functional Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Try, Success, Failure » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Scala for Backend Engineering & Functional Programming ?

Oui. Chaque leçon Scala for Backend Engineering & Functional Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Either pour les erreurs
  2. Try, Success, Failure
  3. Composer Either
  4. Convertir entre les types
← Retour à Scala for Backend Engineering & Functional Programming