Saya dapat melihat beberapa pos di mana pentingnya menangani pengecualian di lokasi pusat atau pada batas proses ditekankan sebagai praktik yang baik daripada membuang sampah sembarangan setiap blok kode di sekitar try / catch. Saya sangat percaya bahwa sebagian besar dari kita memahami pentingnya hal itu, tetapi saya melihat orang-orang masih berakhir dengan pola anti tangkapan-log-rethrow terutama karena untuk memudahkan pemecahan masalah selama pengecualian apa pun, mereka ingin mencatat lebih banyak informasi spesifik konteks (misalnya: parameter metode berlalu) dan caranya adalah dengan membungkus metode sekitar try / catch / log / rethrow.
public static bool DoOperation(int num1, int num2)
{
try
{
/* do some work with num1 and num2 */
}
catch (Exception ex)
{
logger.log("error occured while number 1 = {num1} and number 2 = {num2}");
throw;
}
}
Apakah ada cara yang benar untuk mencapai hal ini sambil tetap mempertahankan pengecualian dalam menangani praktik yang baik? Saya mendengar tentang kerangka kerja AOP seperti PostSharp untuk ini tetapi ingin tahu apakah ada kerugian atau biaya kinerja utama yang terkait dengan kerangka kerja AOP ini.
Terima kasih!