Avec des algorithmes parallèles frappant à la porte, ce pourrait être un bon moment pour penser à la gestion des erreurs.
Donc, au début, il y avait des codes d'erreur. Ceux-là étaient nuls. Il était libre de les ignorer, vous pourriez donc échouer tard et produire du code difficile à déboguer.
Viennent ensuite les exceptions. Celles-ci ont été rendues impossibles à ignorer une fois qu'elles se sont produites, et la plupart des gens (sauf Joel) les aiment mieux.
Et maintenant, nous avons des bibliothèques qui aident le code parallèle. Le problème est que vous ne pouvez pas gérer les exceptions dans le code parallèle aussi facilement que vous le pourriez avec du code non parallèle. Si vous lancez une tâche de manière asynchrone et qu'elle déclenche une exception, il n'y a aucune trace de pile au-delà pour se détendre; le mieux que vous puissiez faire est de le capturer et de l'enregistrer sur l'objet de tâche, s'il existe un tel objet. Cependant, il vainc la force principale des exceptions: vous devez les vérifier et vous pouvez les ignorer sans effort supplémentaire , alors que dans le code à thread unique, une exception déclenchera nécessairement les actions appropriées (même si cela signifie mettre fin à votre programme).
Comment les implémentations de langage ou les bibliothèques doivent-elles prendre en charge les erreurs dans le code parallèle?