Golang'daki Hatalarla Nasıl Başa Çıkılır?

Golang Daki Hatalarla Nasil Basa Cikilir



Go, etkinliği, hızı ve verimliliği nedeniyle popülaritesi artan, çok sevilen bir programlama dilidir. Ancak, diğer programlama dillerinde olduğu gibi, geliştirme ve yürütme aşamalarında hatalar olabilir. Go programlarınızın güvenilirliğini ve kararlılığını sağlamak için hataları etkili bir şekilde ele almak çok önemlidir.

Bu makale, Go'daki hataları yönetmek için çeşitli yöntemleri ve önerilen prosedürleri inceleyecektir.







Golang'daki Hataları İşle

Go'da şunları yapabilirsiniz: hataları işlemek aşağıda belirtilen yöntemlerle:



1: Yeni() İşlev

Go dili şunları sağlar: Yeni() hataları yönetmek için işlev. Yerleşik hata paketinde bulunan bu işlev, geliştiricilerin programları için özel hata mesajları oluşturmasına olanak tanır. kullanarak Yeni() işlevi sayesinde, geliştiriciler hataları etkili bir şekilde işleyebilir ve kullanıcılara anlamlı hata mesajları sağlayabilir.



ana paket

içe aktarmak 'hatalar'
içe aktarmak 'fmt'

fonksiyon kontrolü ( isim dizisi ) hata {
nError := hatalar.Yeni ( 'Geçersiz isim' )
eğer isim ! = 'Linux' {
geri dönmek nHata
}
geri dönmek sıfır
}
ana işlev ( ) {
isim := 'Linux'
hata := kontrol et ( isim )
eğer hata ! = sıfır {
fmt.Println ( hata )
} başka {
fmt.Println ( 'Geçerli isim' )
}
}





Yukarıdaki kod kullanır Yeni() checkName dize olup olmadığını görmek için işlev linux verilen adla eşleşir. İşlev, mesajla ilgili bir hata üretir Geçersiz isim eğer isim değilse linux . İşlev, ad şuna eşitse hata olmadığını göstermek için nil değerini döndürür: linux .

İsim değişkeni şu şekilde ayarlanır: linux ana işlevin çağrısında checkName name değişkenini de bağımsız değişken olarak alan işlev. Ana işlev, aşağıdaki durumlarda hata mesajını yazdırır: checkName işlev bir hata döndürür. Ana işlev şunu yazdırır: Geçerli isim Eğer checkName işlev sıfır döndürür.



Çıktı

2: Errorf() İşlevi

bu Hataf() Go'daki işlev, hataları da işlememizi sağlar. Hataf() bize hata mesajını biçimlendirme seçeneği sunar. Geliştiriciler, fmt paketini içe aktararak hata mesajlarını kendi ihtiyaçlarına göre özelleştirmek için kullanabilirler. Hataf() Go'da hataları yönetme ve iletme verimliliğini kolaylaştırır ve geliştirir.

ana paket
içe aktarmak 'fmt'

işlev div ( n1, n2 sen ) hata {

eğer n2 == 0 {
geri dönmek fmt.Errorf ( '%d / %d \N Bir Sayıyı Sıfıra Bölemez' n1, n2 )
}
geri dönmek sıfır
}
ana işlev ( ) {
hata := div ( 42 , 0 )
eğer hata ! = sıfır {
fmt.Printf ( 'hatalar' , hata )
} başka {
fmt.Println ( 'Geçerli Bölüm' )
}
}

Yukarıdaki kodda, div işlev, n1 ve n2 olmak üzere iki tamsayı girişini kabul eder ve n2 sıfırsa bir hata üretir. İşlev, n2 sıfırsa, n1 ve n2 değerlerini içeren bir mesajla hata üretir. İşlev, n2 sıfır değilse hata olmadığını göstermek için nil değerini döndürür.

Ana işlev div'i 42 ve 0 değerleri ile çalıştırdığında, div'in döndürdüğü hata err değişkenine kaydedilir. Ana işlev, div işlevi bir hata döndürürse hata mesajını görüntülemek için fmt.Printf'i kullanır. Ana işlev yazdırır Geçerli Bölüm div işlevi sıfır döndürürse.

Çıktı

3: Açık Hata İşleme

Go, genellikle istisnalara dayanan diğer programlama dillerine kıyasla açık hata yönetimini teşvik eder. Bu yaklaşım, geliştiricileri try-catch bloklarına güvenmek yerine açıkça hataları kontrol etmek için if ifadelerini kullanmaya teşvik eder. Bunu yaparak, hataların bulunması ve uygun şekilde düzeltilmesi daha olasıdır. Bunu kolaylaştırmak için Go şunları sağlar: eğer hata != sıfır geliştiricilerin bir işlevi yürüttükten sonra hataları kontrol etmesine ve sonuca göre uygun eylemleri gerçekleştirmesine olanak tanıyan ifade. Açık hata işleme ile Go, hata yönetimine daha yapılandırılmış ve güvenilir bir yaklaşım sunar.

ana paket
içe aktarmak 'fmt'

işlev bölme ( a, b yüzer64 ) ( float64, hata ) {
eğer b == 0 {
geri dönmek 0 , fmt.Errorf ( 'sıfıra bölünemez' )
}
geri dönmek A / b, sıfır
}
ana işlev ( ) {
sonuç, hata := böl ( 13 , 3 )
eğer hata ! = sıfır {
fmt.Printf ( 'Hata: % v \N ' , hata )
} başka {
fmt.Printf ( 'Sonuç: %f \N ' , sonuç )
}
sonuç, hata = bölme ( 23 , 0 )
eğer hata ! = sıfır {
fmt.Printf ( 'Hata: % v \N ' , hata )
} başka {
fmt.Printf ( 'Sonuç: %f \N ' , sonuç )
}
}

Bu çizimde, iki değeri bölmek için bölme işlevi kullanılmıştır. Çıktı, bunu yapmanın sonucudur. İkinci sayı 0 ise, işlev belirgin bir hata mesajıyla bir hata üretir.

Böl, ana işlevde iki kez çağrılır: bir kez geçerli girdilerle ve bir kez de geçersiz girdiyle. eğer hata != sıfır ifadesi, bölme işlevi her kullanıldığında bir hata olup olmadığını belirlemek için kullanılır. Oluşursa bir hata mesajı yazdırılır. Değilse, sonuç yazdırılır.

Çıktı

4: Ertele, Panikle ve İyileş

Golang ayrıca şunları sağlar: ertelemek bir programın veya belirli bir kod bloğunun tamamlanmasından sonra bir işlevi yürütmek için kullanılan ifade. bu ertelemek ifadesi genellikle şu ifadeyle birlikte kullanılır: iyileşmek çalışma zamanı panik hatalarını yakalama ve kurtarma işlevi. Çalışma zamanı panik hatası oluştuğunda, iyileşmek işlevi, hata durumundan kurtulmak ve programın çökmesini önlemek için kullanılır. Bu, dosyaları kapatma, ağ bağlantılarını kapatma veya kaynakları serbest bırakma gibi temizleme görevleri için kullanışlıdır. Bu görevleri erteleyerek, bir hata oluşsa bile yürütülmelerini sağlarsınız.

bu panik Beklenmeyen bir hata oluştuğunda programın normal çalışmasını durdurmak için kullanılır. iyileşmek paniği yönetmek ve programın yürütülmesine devam etmek için kullanılır.

ana paket

içe aktarmak 'fmt'

func kurtarmaFromPanic ( ) {
eğer r := kurtar ( ) ; R ! = sıfır {
fmt.Println ( 'Panikten kurtuldum:' , R )
}
}
işlev bölme ( x,y kayan nokta64 ) şamandıra64 {
kurtarmaFromPanic'i ertele ( )

eğer ve == 0 {
panik ( 'sıfıra bölünemez' )
}
geri dönmek X / Ve
}
ana işlev ( ) {
fmt.Println ( bölmek ( 13 , 3 ) )
fmt.Println ( bölmek ( 23 , 0 ) )
}

Yukarıdaki kodda, iki kayan noktalı değeri bölmek için bölme işlevi kullanılır. Çıktı, bunu yapmanın sonucudur. İkinci sayı sıfırsa, işlev tarafından özelleştirilmiş bir hata mesajı verilir. Erteleme deyimi çağırmak için kullanılır kurtarmakFromPanic işlev. bu kurtarmakFromPanic işlevi, bölme işlevi içinde meydana gelen bir paniği algılar ve meydana geldiyse bir hata yazdırır.

Böl, ana işlevde iki kez çağrılır: bir kez geçerli girdilerle ve bir kez de geçersiz girdiyle. bu fmt.Println işlevi, bölme işlevi her çalıştırıldığında işlevin çıktısını yazdırır. bu kurtarmakFromPanic işlevi, olması durumunda bir panik algılar ve olması durumunda bir hata yazdırır.

Çıktı

Hatayı tespit ettikten sonra program panikten kurtuldu ve çalışmaya devam etti. Ancak, kod paniğe kapıldı ve ikinci bölme çağrısında bir değer döndürmedi, bu nedenle sıfır döndürdü.

5: Sarma Hatası

Go ayrıca şu şekilde bilinen bir özelliği de içerir: kaydırma hatası , bu da bir hata mesajına ek bağlam eklemenizi sağlar. Bu, sorunları kaydetmek veya hata mesajlarında daha fazla ayrıntı sağlamak için yararlıdır. Bu, orijinal hatayı ve ek bağlamı içine alan bir hata türü oluşturarak gerçekleştirilebilir.

ana paket

içe aktarmak 'hatalar'
içe aktarmak 'fmt'

ana işlev ( ) {
eğer hata := bar ( ) ; hata ! = sıfır {
fmt.Println ( hata )
}
}
işlev bölme ( a, b yüzer64 ) ( float64, hata ) {
eğer b == 0 {
geri dönmek 0 , hatalar.Yeni ( 'sıfıra bölüm' )
}
geri dönmek A / b, sıfır
}
işlev çubuğu ( ) ( hata hatası ) {
_, hata = bölme ( 42 , 0 )
eğer hata ! = sıfır {
geri dönmek fmt.Errorf ( 'hesaplanamadı: %w' , hata )
}
geri dönmek sıfır
}

Yukarıdaki kodda, bu örnekte bölme işlevi iki sayının oranını hesaplar ve ikinci değer sıfırsa bir hata atar. Çubuk işlevi, bölme işlevini çağırır ve ardından hatayı sarar. bölmek fmt.Errorf işlevini kullanarak orijinal hata mesajını içeren bir mesajla yeni bir hata döndürür. bar işlevi, döndürdüğü hataları da yazdıran ana işlev tarafından çağrılır.

Çıktı

Çözüm

Yazılım geliştirme şunları içermelidir: Hata yönetimi ve Golang, bunu incelikle yapmak için çeşitli yerleşik işlevlere ve yöntemlere sahiptir. Bu mekanizmalar, geliştiricilerin hataları yakalamasına ve düzeltmesine, program çökmelerini önlemesine ve son kullanıcılara bilgilendirici hata mesajları sağlamasına olanak tanır. Geliştiriciler, bu hata işleme mekanizmalarını etkin bir şekilde kullanarak sağlam, güvenilir ve verimli yazılım uygulamaları oluşturabilir.