İstisna Yakalamak – Python Analizi Yaptırma Fiyatları – Python Yazılım Analizi Örnekleri – Ücretli Python Analizi Yaptırma – Python Dili

info@akademidelisi.com * 0 (312) 276 75 93 * Her bölümden, Ödev Yazdırma, Proje Yaptırma, Tez Yazdırma, Rapor Yazdırma, Makale Yazdırma, Araştırma Yazdırma, Tez Önerisi Yazdırma talepleriniz için iletişim adreslerini kullanın. Makale YAZDIRMA siteleri, Parayla makale YAZDIRMA, Seo makale fiyatları, Sayfa başı yazı yazma ücreti, İngilizce makale yazdırma, Akademik makale YAZDIRMA, Makale Fiyatları 2022, Makale yazma, Blog Yazdırma, Blog Yazdırmak İstiyorum

İstisna Yakalamak – Python Analizi Yaptırma Fiyatları – Python Yazılım Analizi Örnekleri – Ücretli Python Analizi Yaptırma – Python Dili

6 Mart 2023 Python hata düzeltme Python try except Kullanımı 0
Sürüm Örneği Sunmak

Tek Blokla İki İstisna Yakalamak

Bir blok ile birden fazla istisna tipini yakalamak istiyorsanız hepsini aşağıdaki gibi bir tuple içerisinde belirtebilirsiniz. Önceki kodda, kullanıcı bir dizi veya sayıdan başka bir şey girerse veya ikinci sayı sıfırsa, aynı hata mesajı yazdırılır.

Basitçe bir hata mesajı yazdırmak elbette çok yardımcı olmaz. Bir alternatif, bölüm çalışana kadar numara istemeye devam etmek olabilir. Bunu nasıl yapacağınızı bu bölümün ilerleyen kısımlarında yer alan “Her Şey İyi Olduğunda” bölümünde göstereceğim.

istisna yan tümcesindeki istisnaların etrafındaki parantezlerin önemli olduğunu unutmayın; Yaygın bir hata, onları atlamaktır, bu durumda istediğinizden farklı bir şey elde edebilirsiniz. 

Nesneyi Yakalamak

Bir istisna yan tümcesinde istisnanın kendisine erişmek istiyorsanız, bir yerine iki bağımsız değişken kullanabilirsiniz. (Birden fazla istisna yakalıyor olsanız bile, yalnızca tek bir bağımsız değişken dışında tedarik ettiğinizi unutmayın.)

Bu, (örneğin) programınızın çalışmaya devam etmesini istiyorsanız, ancak hatayı bir şekilde günlüğe kaydetmek istiyorsanız (belki yalnızca kullanıcıya yazdırarak) yararlı olabilir. Aşağıda, (gerçekleşirse) istisnayı yazdıran ancak çalışmaya devam eden örnek bir program bulunmaktadır.

Bu küçük programdaki istisna yan tümcesi yine iki tür istisna yakalar, ancak nesnenin kendisini de açıkça yakaladığınız için, kullanıcının ne olduğunu görebilmesi için onu yazdırabilirsiniz.

Program birkaç istisna türünü ele alsa bile, bazıları yine de gözden kaçabilir. Örneğin, aynı bölme programını kullanarak, istemde hiçbir şey yazmadan Enter tuşuna basmayı deneyin. Bunun gibi bir yığın izi almalısınız.

Bu istisna, try/except deyiminden geçti ve haklı olarak öyle. Bunun olabileceğini tahmin etmemiştiniz ve buna hazırlıklı değildiniz. Bu durumlarda, programın hemen çökmesi (böylece neyin yanlış olduğunu görebilirsiniz), istisnayı yakalaması amaçlanmayan bir try/except ifadesiyle gizlemesinden daha iyidir.

Ancak, bir kod parçasındaki tüm istisnaları yakalamak istiyorsanız, istisna sınıfını istisna yan tümcesinden çıkarabilirsiniz.

Dikkat : Bunun gibi tüm istisnaları yakalamak riskli bir iştir çünkü hazırlıklı olduğunuz kadar düşünmediğiniz hataları da gizleyecektir. Ayrıca, kullanıcının Ctrl-C ile yürütmeyi sonlandırma girişimlerini, çağırdığınız işlevlerin sys.exit ile sonlandırma girişimlerini vb. yakalar. Çoğu durumda, İstisna e dışında kullanmak ve istisna nesnesi e üzerinde biraz kontrol yapmak daha iyi olur.

Bazı durumlarda, kötü bir şey olmadıkça yürütülen bir kod bloğuna sahip olmak yararlı olabilir; koşul ifadelerinde ve döngülerde olduğu gibi, bir else yan tümcesi ekleyebilirsiniz.

Burada döngü yalnızca (else yan tümcesindeki break ifadesiyle) herhangi bir istisna ortaya çıkmadığında bozulur. Başka bir deyişle, yanlış bir şey olduğu sürece program yeni girdi istemeye devam eder.

Daha önce belirtildiği gibi, boş bir istisna yan tümcesi kullanmanın bir alternatifi, İstisna sınıfının tüm istisnalarını yakalamaktır (herhangi bir alt sınıfın tüm istisnalarını da yakalayacaktır).

O zaman her şeyi yakalayacağınızdan yüzde 100 emin olamazsınız, çünkü try/except ifadenizdeki kod yaramaz olabilir ve eski moda dize istisnalarını kullanabilir veya belki de İstisna alt sınıfını oluşturmayan özel bir istisna oluşturabilir.

Son olarak, nihayet yan tümcesi vardır. Olası bir istisnadan sonra temizlik yapmak için kullanırsınız. Bir try yan tümcesiyle birleştirilir (ancak bir istisna yan tümcesi değildir).

Önceki bölümde, try yan tümcesinde hangi istisnalar oluşursa oluşsun, finally yan tümcesinin yürütüleceği garanti edilir. (x’i try yan tümcesinden önce başlatmanın nedeni, aksi halde ZeroDivisionError nedeniyle ona asla bir değer atanmamasıydı. Bu, finally yan tümcesinde del kullanıldığında bir istisnaya yol açardı ki bunu yakalayamazsınız.)


python traceback (most recent call last) hatası
traceback (most recent call last) hatası çözümü
traceback (most recent call last) python
Python try except Kullanımı
Python Hata bulucu
Python hata Yakalama
Python hata düzeltme
Python hata Türleri


İstisnalar ve İşlevler

İstisnalar ve işlevler oldukça doğal bir şekilde birlikte çalışır. Bir işlevin içinde bir istisna ortaya çıkarsa ve orada işlenmezse, işlevin çağrıldığı yere yayılır (kabarcıklar yükselir).

Orada da işlenmezse, ana programa (genel kapsam) ulaşana kadar yayılmaya devam eder ve orada bir istisna işleyici yoksa, program bir hata mesajı ve neyin yanlış gittiğine dair bazı bilgiler (bir yığın) ile durur.

Gördüğünüz gibi, hatalıda ortaya çıkan istisna, hatalı ve ignore_exception aracılığıyla yayılır ve sonunda bir yığın izlemesine neden olur. Benzer şekilde, istisna_tutucuya yayılır, ancak orada bir try/except ifadesiyle işlenir.

İstisna işleme çok karmaşık değildir. Kodunuzun bir kısmının belirli bir tür istisnaya neden olabileceğini biliyorsanız ve bu olursa ve olduğunda programınızın bir yığın izlemeyle sonlanmasını istemiyorsanız, gerekli try/except veya try/finally eklersiniz. Gerektiğinde bununla başa çıkmak için ifadeler.

Bazen, koşullu ifadelerle, istisna işlemede yapabildiğinizin aynısını yapabilirsiniz, ancak koşullu ifadeler muhtemelen daha az doğal ve daha az okunabilir olacaktır.

Öte yandan, if/else’in doğal uygulamaları gibi görünen bazı şeyler aslında try/except ile çok daha iyi uygulanabilir. Bir iki örneğe bakalım.

Diyelim ki bir sözlüğünüz var ve eğer varsa, belirli bir anahtarın altında saklanan değeri yazdırmak istiyorsunuz. Orada değilse, hiçbir şey yapmak istemezsiniz.

Kod sezgiseldir, ancak biraz verimsizdir (buradaki asıl mesele gerçekten kodun basitliği olmasına rağmen). Anahtar ‘mesleğini’ iki kez araması gerekir.

Burada işlev basitçe “meslek” anahtarının mevcut olduğunu varsayar. Normalde öyle olduğunu varsayarsanız, bu biraz çaba tasarrufu sağlar: Değer getirilecek ve gerçekten orada olup olmadığını kontrol etmek için fazladan getirme yapılmadan yazdırılacaktır. Anahtar yoksa, istisna yan tümcesi tarafından yakalanan bir KeyError istisnası oluşturulur.

Bir nesnenin belirli bir özniteliği olup olmadığını kontrol ederken try/except’i de yararlı bulabilirsiniz. Örneğin, bir nesnenin yazma özelliğine sahip olup olmadığını kontrol etmek istediğinizi varsayalım. O zaman böyle bir kod kullanabilirsiniz.

Burada try yan tümcesi, onunla yararlı bir şey yapmadan yalnızca özniteliğe erişir. Bir AttributeError ortaya çıkarsa, nesne özniteliğe sahip değildir; aksi halde özniteliği vardır. Bu, tanıtılan getattr çözümüne doğal bir alternatiftir.

Hangisini tercih edeceğiniz büyük ölçüde bir zevk meselesidir. Aslında, getattr dahili olarak tam olarak şu şekilde uygulanır: Özniteliğe erişmeye çalışır ve bu girişimin ortaya çıkarabileceği AttributeError’ı yakalar.

Buradaki verimlilik kazancının büyük olmadığını unutmayın. (Daha çok gerçekten çok küçük gibi.) Genel olarak (programınızda performans sorunları yoksa), bu tür bir optimizasyon için çok fazla endişelenmemelisiniz. Buradaki önemli nokta, bir try/except deyimi kullanmak çoğu durumda if/else ifadesinden çok daha doğaldır (daha “Pythonic”) ve bunu yapabildiğiniz her yerde kullanma alışkanlığı edinmelisiniz.

yazar avatarı
akademi22 akademi22

 

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir