Dengan algoritma paralel yang mengetuk pintu, mungkin saat yang tepat untuk memikirkan penanganan kesalahan.
Jadi pada awalnya ada kode kesalahan. Mereka payah. Itu gratis untuk mengabaikan mereka, sehingga Anda bisa gagal terlambat dan menghasilkan kode sulit untuk debug.
Kemudian muncul pengecualian. Mereka dibuat mustahil untuk diabaikan begitu mereka muncul, dan kebanyakan orang (kecuali Joel) lebih menyukainya.
Dan sekarang kami punya perpustakaan yang membantu kode paralel. Masalahnya adalah, Anda tidak dapat menangani pengecualian dalam kode paralel semudah yang Anda bisa dengan kode non-paralel. Jika Anda meluncurkan tugas secara tidak sinkron dan melempar pengecualian, tidak ada jejak tumpukan melewatinya untuk melepas lelah; terbaik yang dapat Anda lakukan adalah menangkapnya dan mendaftarkannya pada objek tugas, jika ada objek seperti itu. Namun, itu mengalahkan kekuatan utama dari pengecualian: Anda harus memeriksanya dan Anda dapat mengabaikannya tanpa upaya tambahan , sedangkan dalam kode single-threaded, sebuah perkecualian akan memicu tindakan yang tepat (bahkan jika itu berarti menghentikan program Anda).
Bagaimana seharusnya implementasi bahasa atau perpustakaan mendukung kesalahan dalam kode paralel?