MethodA memanggil MethodB yang pada gilirannya memanggil MethodC.
Tidak ada penanganan eksepsi di MethodB atau MethodC. Tetapi ada penanganan pengecualian di MethodA.
Dalam MethodC terjadi pengecualian.
Sekarang, pengecualian itu menggelembung ke MethodA, yang menanganinya dengan tepat.
apa yang salah dengan ini?
Dalam pikiran saya, pada titik tertentu penelepon akan mengeksekusi MethodB atau MethodC, dan ketika pengecualian memang terjadi dalam metode tersebut, apa yang akan diperoleh dari penanganan pengecualian di dalam metode tersebut, yang pada dasarnya hanyalah blok coba / tangkap / akhirnya bukannya membiarkan mereka menggembung sampai ke callee?
Pernyataan atau konsensus seputar penanganan pengecualian adalah untuk membuang ketika eksekusi tidak dapat dilanjutkan hanya karena itu - pengecualian. Saya mengerti. Tapi mengapa tidak menangkap pengecualian lebih jauh dari rantai daripada mencoba / menangkap blok sepanjang jalan.
Saya mengerti ketika Anda perlu membebaskan sumber daya. Itu masalah yang sama sekali berbeda.
try-catch
blok.
Result<T>
tipe (tipe yang menyimpan hasil dari perhitungan, atau kesalahan), dan mengembalikannya dari fungsi melempar Anda yang sebaliknya. Menyebarkan kesalahan di tumpukan akan berarti membaca setiap nilai kembali, memeriksa apakah itu kesalahan, dan mengembalikan kesalahan jika demikian.