Defer, Panic ve Recover
Go içinde defer, panic ve recover kavramını, kullanım sınırlarını ve güvenilir uygulama biçimini öğrenin.
Defer, Panic ve Recover, Go ile hata ve girdi çıktı çalışırken bileşenler arasındaki sorumlulukları belirginleştirmek için kullanılan yaklaşımı açıklar. Hata modeli başarısızlığın nerede yakalanacağını, hangi bağlamla taşınacağını ve kullanıcıya nasıl sunulacağını belirler.
Hataları sessizce yutmak yerine özgün nedeni korumak, yalnızca kurtarılabilir noktada yakalamak ve kaynak temizliğini garanti etmek gerekir. İsimlendirme, küçük sorumluluklar ve görünür veri akışı; kodun yalnızca çalışmasını değil, anlaşılmasını da sağlar. Aşağıdaki örnek, konuyu küçük ve izlenebilir bir akış içinde gösterir.
Yaygın hata ve doğru yaklaşım
Girdi, çıktı ve hata sözleşmesini belirsiz bırakmak çağıran kodu kırılgan hâle getirir. Normal akış kadar başarısızlık davranışını da açıkça tasarlayın.
Sonuç
Defer, Panic ve Recover, doğru sınırlar ve açık bir sözleşmeyle kullanıldığında Go kodunun güvenilirliğini artırır. Önce doğruluğu kurun; ölçüm göstermeden karmaşık optimizasyona yönelmeyin.
package main
import "fmt"
type Book struct { Title string }
type Printer interface { Print() string }
func (b Book) Print() string { return b.Title }
func main() { fmt.Println(Book{Title: "Defer, Panic ve Recover"}.Print()) }