国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Maison développement back-end C++ Comment les expressions lambda gèrent-elles les exceptions en C++ ?

Comment les expressions lambda gèrent-elles les exceptions en C++ ?

Apr 17, 2024 pm 12:42 PM
c++ lambda Gestion des exceptions

En C++, il existe deux fa?ons de gérer les exceptions à l'aide d'expressions Lambda?: intercepter l'exception à l'aide d'un bloc try-catch et gérer ou renvoyer l'exception dans le bloc catch. Utilisez une fonction wrapper de type std::function dont la méthode try_emplace peut intercepter les exceptions dans les expressions Lambda.

lambda 表達式在 C++ 中如何處理異常?

Utilisation d'expressions Lambda pour gérer les exceptions en C++

Introduction

Une expression Lambda est une fonction anonyme qui capture des variables externes et transmet des paramètres par valeur ou référence. En C++, les expressions lambda peuvent être utilisées à diverses fins, notamment pour gérer les exceptions.

Utilisation des blocs try-catch

Les blocs try-catch sont le moyen standard de gérer les exceptions dans les expressions Lambda. Le bloc catch permet d'intercepter des types spécifiques d'exceptions ou toutes les exceptions. L'exemple suivant montre comment utiliser un bloc try-catch dans une expression Lambda pour gérer les exceptions?:

#include <functional>
#include <iostream>

int main() {
  auto lambda =  [](int x) -> int {
    try {
      return x / 0;  // 將引發(fā) std::runtime_error 異常
    } catch (const std::exception& e) {
      std::cout << "Exception caught: " << e.what() << std::endl;
      return -1;
    }
  };

  int result = lambda(10);
  std::cout << "Result: " << result << std::endl;
  return 0;
}

Utilisation de std::function

Une autre fa?on de gérer les exceptions dans une expression Lambda consiste à utiliser std:: fonction . std::function est une fonction wrapper qui accepte différents types de fonctions, y compris les expressions Lambda. std::function fournit une méthode try_emplace qui permet d'intercepter les exceptions dans les expressions Lambda. L'exemple suivant montre comment utiliser std::function pour gérer les exceptions?: std::function。std::function 是一種包裝函數,它可以接受不同的函數類型,包括 Lambda 表達式。std::function 提供了一個 try_emplace 方法,它允許在 Lambda 表達式中捕獲異常。以下示例演示了如何使用 std::function 來處理異常:

#include <functional>
#include <iostream>

int main() {
  std::function<int(int)> lambda;
  try {
    lambda = [](int x) -> int { return x / 0; };  // 將引發(fā) std::runtime_error 異常
  } catch (const std::exception& e) {
    std::cout << "Exception caught: " << e.what() << std::endl;
    lambda = [](int x) -> int { return -1; };
  }

  int result = lambda(10);
  std::cout << "Result: " << result << std::endl;
  return 0;
}

實戰(zhàn)案例

考慮一個具有以下接口的函數:

int do_something(const std::string& input);

此函數可能引發(fā) std::invalid_argument 異常,如果 input 無效。我們可以使用 Lambda 表達式和 try-catch 塊來處理此異常,如下所示:

auto do_something_safe = [](const std::string& input) -> int {
  try {
    return do_something(input);
  } catch (const std::invalid_argument& e) {
    // 處理異常并返回 -1
    std::cout << "Invalid input: " << e.what() << std::endl;
    return -1;
  }
};

然后,我們可以在代碼中安全地調用 do_something_saferrreee

??Un exemple pratique??????Considérez une fonction avec l'interface suivante?: ??rrreee??Cette fonction peut lancer std?: :invalid_argument Exception si input n'est pas valide. Nous pouvons gérer cette exception en utilisant une expression Lambda et un bloc try-catch comme indiqué ci-dessous?: ??rrreee?? Nous pouvons alors appeler en toute sécurité do_something_safe dans notre code, et ce n'est pas nécessaire gérer les exceptions explicitement. ??

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
C Exemple d'expressions de pli C Exemple d'expressions de pli Jul 28, 2025 am 02:37 AM

C FoldeRexpressions est une caractéristique introduite par C 17 pour simplifier les opérations récursives dans les modèles de paramètres variadiques. 1. Le pli gauche (args ...) Sum de gauche à droite, comme la somme (1,2,3,4,5) renvoie 15; 2. Logical et (args && ...) déterminez si tous les paramètres sont vrais, et les paquets vides renvoient vrai; 3. Utiliser (std :: cout

C Exemple de l'arborescence de recherche binaire C Exemple de l'arborescence de recherche binaire Jul 28, 2025 am 02:26 AM

AbinarySearchtree (BST) IsabinaryTreewhereTheleftsUbtreContainainslyNodeswithvalueslesshanthenode’svalue, TheRightSubTreConontainsonlyNodeswithvaluesGreaterthantheNode’svalue, andbothsubtreeSustalsobeBsts; 1. implémentation de la thèsecluserenereenstructurestructrescobebe;

C Exemple de référence C Exemple de référence Jul 28, 2025 am 02:23 AM

Les références sont alias pour les variables, qui doivent être initialisées à la déclaration et ne peuvent pas être référentes. 1. Les références partagent la même adresse de mémoire via Alias. La modification de tout nom affectera la valeur d'origine; 2. Les références peuvent être utilisées pour réaliser une transmission bidirectionnelle et éviter les frais généraux de copie; 3. Les références ne peuvent pas être vides et avoir la grammaire, et n'ont pas la capacité de se rapporter par rapport aux pointeurs; 4. Constt & peut être utilisé pour transmettre en toute sécurité les paramètres, empêcher la modification et la liaison de support d'objets temporaires; 5. Les références des variables locales ne doivent pas être renvoyées pour éviter les erreurs de référence suspendues. La ma?trise des citations est le principal fondement de la compréhension du C. moderne C.

Exemple C fstream Exemple C fstream Jul 28, 2025 am 01:20 AM

Tout d'abord, clarifions la réponse: cet article présente l'utilisation de FStream en C, y compris les opérations de lecture et d'écriture de fichiers de base et les fonctions de lecture et d'écriture bidirectionnelles avancées. 1. Utilisez STD :: FStream pour définir l'objet de flux de fichiers et ouvrez le fichier dans un mode spécifié (comme std :: ios :: out, std :: ios :: in); Utilisez-le lors de l'écriture

Quels sont les paramètres de lancement.json corrects pour déboguer une application C avec GDB sur Linux? Quels sont les paramètres de lancement.json corrects pour déboguer une application C avec GDB sur Linux? Aug 04, 2025 am 03:46 AM

TODEBUGAC ApplicationUsingGdBinVisualStudiocode, ConfigureTheLaUnch.jsonFileCorrectly; KeySettingSinclut IspecifierTheExECutablePathWith "Program", Définition "MIMODE" vers "GDB" et "Tapez" vers "CPPDBG"

C Exemple de vérification C Exemple de vérification Jul 30, 2025 am 02:30 AM

L'endianité du système peut être détectée par une variété de méthodes, la méthode de l'Union ou du pointeur la plus couramment utilisée. 1. Utilisez un syndicat: attribuez UInt32_t à 0x01020304, si l'octet d'adresse le plus bas est 0x04, c'est un petit endian, et s'il est 0x01, c'est un grand endian; 2. Utilisez la conversion du pointeur: attribuez Uint16_t à 0x0102, lisez l'ordre d'octets via le pointeur Uint8_t, [0] == 0x02 et [1] == 0x01 est un petit endian, sinon c'est un grand endian; 3. Détection du temps de compilation: Définissez la fonction Consxpr pour déterminer si la variable (char) et int est 1 et combinez ifConstexpr pour déterminer l'ordre endian pendant la période de compilation; 4. Encapsulation macro de l'exécution: utilisation (char *) & ampli

C Exemple de tableau char à cha?ne C Exemple de tableau char à cha?ne Aug 02, 2025 am 05:52 AM

La réponse est: utilisez le constructeur Std :: String pour convertir le tableau char en cha?ne std ::. Si le tableau contient l'intermédiaire ?\ 0?, la longueur doit être spécifiée. 1. Pour les cha?nes de style C se terminant par '\ 0', utilisez Std :: Stringtr (chararray); pour terminer la conversion; 2. Si le tableau char contient le ?\ 0? du milieu mais doit convertir les n caractères des premiers, utilisez Std :: stringstr (chararray, longueur); pour spécifier clairement la longueur; 3. Lors du traitement d'un tableau de taille fixe, assurez-vous qu'il se termine par ?\ 0? puis convertissez-le; 4. Utiliser Str.Assign (Chararray, Chararray Strl

C Trouver dans l'exemple vectoriel C Trouver dans l'exemple vectoriel Aug 02, 2025 am 08:40 AM

La méthode la plus courante pour trouver des éléments vectoriels en C est d'utiliser STD :: Find. 1. Utilisez STD :: Rechercher pour rechercher avec la plage d'itérateur et la valeur cible. En comparant si l'itérateur retourné est égal à fin (), nous pouvons juger si elle est trouvée; 2. Pour les types personnalisés ou les conditions complexes, STD :: Find_if doit être utilisé et les fonctions de prédicat ou les expressions de lambda doivent être transmises; 3. Lors de la recherche de types standard tels que des cha?nes, vous pouvez directement passer la cha?ne cible; 4. La complexité de chaque recherche est O (n), qui convient aux données à petite échelle. Pour des recherches fréquentes, vous devriez envisager d'utiliser STD :: SET ou STD :: UNCORD_SET. Cette méthode est simple, efficace et largement applicable à divers scénarios de recherche.

See all articles