Bisakah Anda merekomendasikan pola desain / pendekatan untuk mengekspos / mentolerir / memulihkan dari kesalahan sistem, penanganan Exception (Java, C ++, Perl, PHP)?
Beberapa kesalahan perlu dilaporkan.
Beberapa kesalahan dapat ditangani secara internal (dengan coba lagi atau tidak penting (dapat diabaikan).
Bagaimana Anda menyusun kode untuk menangkapnya?
Tetapi semua kesalahan harus dicatat.
Apa praktik terbaik yang ada?
Dan untuk mensimulasikan mereka untuk dapat sepenuhnya menguji komponen yang terkena dampaknya?
Pertanyaan spesifik non-pemrograman-bahasa umum yang berlaku untuk beberapa bahasa pemrograman modern tetapi akan menyambut contoh ilustrasi pola, pendekatan dan filosofi di Jawa, C ++, PHP dan Perl.
(Juga ditanyakan dalam stackoverflow: /programming/7432596/recommend-a-design-pattern-approach-to-exposing-tolerating-recovering-from-system tapi saya pikir itu harus ditanyakan pada programmer juga karena Saya pikir programmer Q&A mencakup masalah perangkat lunak / pemrograman yang lebih luas sedangkan stackoverflow lebih tentang implementasi teknis IMHO).
sumber
Jawaban:
Gagal cepat adalah pendekatan desain yang hebat, dan mungkin bisa dihitung sebagai pola: http://en.wikipedia.org/wiki/Fail-fast
Saya juga menemukan sejumlah prinsip yang berguna:
sumber
Setelah bekerja dengan pengecualian di Jawa dan .NET DAN setelah membaca banyak artikel tentang bagaimana / kapan / mengapa menangkap pengecualian, saya akhirnya menemukan langkah-langkah berikut yang saya lalui di kepala setiap kali saya melihat potensi pengecualian terjadi, atau pengecualian saya harus menangkap (Jawa) ... bahkan jika itu tidak pernah terjadi (menghela napas ...). Dan sepertinya itu berfungsi, setidaknya untuk saya:
Saya juga harus menambahkan langkah 0 , di mana saya sengaja melemparkan apa yang saya sebut pengecualian "bisnis" (pengecualian baru yang saya buat dengan memperluas kelas "Pengecualian") ketika beberapa perawatan kompleks tidak dapat dieksekusi karena kesalahan data, TAPI itu diketahui terjadi karena telah diidentifikasi sebagai kasus pengecualian selama analisis.
Kecuali untuk bagian logging, saya sepenuhnya setuju dengan poin yang ditulis oleh "mikera"; Saya hanya akan menambahkan bahwa pengecualian harus dicatat sekali saja.
Juga, langkah-langkah yang saya daftarkan mungkin berbeda jika apa yang Anda tulis adalah API / Framework . Di sana, melemparkan pengecualian yang dirancang dengan baik adalah wajib untuk membantu pengembang memahami kesalahan mereka.
Sedangkan untuk menguji pengecualian, menggunakan objek tiruan Anda harus dapat menguji hampir semuanya, baik itu pengecualian-al atau tidak, asalkan kelas Anda menghormati praktik terbaik "satu kelas untuk melakukan satu hal". Saya juga secara pribadi memastikan untuk menandai metode yang paling penting tetapi tersembunyi sebagai "dilindungi" daripada "pribadi" sehingga saya dapat mengujinya tanpa terlalu banyak kesulitan. Terlepas dari itu, menguji pengecualian adalah sederhana, hanya memprovokasi pengecualian dan "mengharapkan" pengecualian terjadi dengan menangkapnya. Jika Anda tidak mendapatkan pengecualian, maka Anda memiliki kesalahan unit test case.
sumber
Bangun benda Anda dengan cara yang benar, jangan khawatir tentang faktor eksternal. Jika Anda memilih untuk mengambil keuntungan dari pengecualian, maka buatlah objek Anda melempar pengecualian jika mereka gagal dalam sesuatu.
Setelah semua objek Anda bekerja dengan benar, seharusnya cukup mudah untuk membuat hierarki tanggung jawab penanganan kesalahan yang bersih dalam desain Anda.
sumber