Python ile her exception verdiğinde geçip kodun zorla devam etmesini sağlamk mümkün mü?

Sadece Python ile (modülsüz), her exception verdiğinde geçip kodun zorla devam etmesini sağlamak mümkün mü?
(Yani try'a girsin, error çıkarsa excepte düşmesin tryda devam etsin.)

Batuhan Kızmaz
B
1 kişi takip ediyor.
Misafir olarak yayınla
7
7 CEVAP

Try'da hata verirse direk excepte düşüyor. Except'te bir şey yapma diyebilirsiniz sanırım. (Genel try catch bilgimle konuşuyorum belki pythonda farklıdır.)

Batuhan Dalarslan
B

İlk başta benim de düşündüğüm o idi fakat try ile deniyor excepte düştüğünde trydan devam etmesini istiyorum fakat sadece duruyor.

Batuhan Kızmaz 2 ay

Bu söylediğiniz "if şartını sağlamıyorsa else'e düşmesin if'ten devam etsin" demeye benziyor. Try da excepte düşüren ne ise o sebebi atlatmanız gerekiyor.

Batuhan Dalarslan 2 ay

Ben en iyisi durumu açıklıyayım, bir dictim var ve bir fonksiyonum var. Bu fonksiyon dictte bulunan bir elemana göre ihtiyaçları belirliyor ve eğer ihtiyaçlar karşılanmıyorsa False karşılanıyorsa True döndürüyor. Ben buraya -smtp- adlı elemanı gönderirsem 4 ihtiyacı bulunuyor (server, port, mail, pwd) şeklinde. Yazdığım modülde debug diye bir fonksiyon olduğu için ayrıca pythonun error döndürmesini istemiyorum fakat python o 4 elemandan birisi bile olmasa KeyError döndürüyor. Bunu çözmem gerekiyor.

Batuhan Kızmaz 2 ay

com-7amv0euclff1vftqh6j0.jpg

Batuhan Kızmaz 2 ay

Gelmeyen değişkenlere default değer atasanız? Null gibi mesela? En azından excepte düşmemiş olur. Bir de overloading fikri geliyor aklıma.

Batuhan Dalarslan 2 ay

muhtemel hata çıkabilecek yerler için ayrı ayrı try except koy, yani içe içe birsuru try except blokları gibi

Cengiz Şenkan
C

o zaman kod 300+ satır filan olur herlade

Batuhan Kızmaz 2 ay

pass komutu olmaz mi ?

Berkcan Kamaz
B

Pass komutu geçer, eğer pass dersem tryda hata aldığı an uygulama biter

Batuhan Kızmaz 2 ay

Osman, hayır öyle birşey allahıma şükürler olsun ki yok. Burası python grubu. Bash'te bu var diye bu gün şirkette kanser olmak üzereydi iş arkadaşım Bedirhan. Lütfen bir kod patlıyorsa patlasın, sessizce geçip gitmesin, asla.

Ek olarak, try except yaptığında da pass etme, en azından logla, bir yere yazdır, printle ne yapıyorsan... Devran döner o exceptionların hürmetine horoz kesersin

Umut Çakıray
U

Hocam ben kendi hata mesajımı kendim vermek istiyorum. Bunu Pythonun gereksiz keyErrorları ile değil de daha nazik debug modum ile verdirmek daha mantıklı geliyor

Batuhan Kızmaz 2 ay

com-40xsayh1kfki122oytha.jpg

Batuhan Kızmaz 2 ay

Soru: Contextlib'in suppres fonksiyonunu pure pythonda kullanmak. Bu kadar abartmaya gerek yoktu diye düşünüyorum Umarım attığınız kodu entegre edebilirim

Batuhan Kızmaz 2 ay

şöyle anlatayım, sicis() içindeki kod ZeroDivisionError raise ediyor, ben onu tutup kendi hatam olan SicisError raise ediyorum, sicis() i çağırdığım yerde de SicisError içindeki mesajı print ettirip aynı hatayı tekrar raise ediyorum (opsiyonel)

Umut Çakıray 2 ay

Ve osman lutfen ss degil pastebin kullan, ayrica verdigin ssden zar zor okuyabildigim kadariyla if elseif yapilarinda da ufak hatalar var

Ömer Gülsoy 2 ay

o try exceptleri su sekilde denesene bir, name = self. Rdict['smtp_name'] if 'smtp_name' in self. Rdict. Keys() else None

Ömer Gülsoy
Ö

Büyük ihtimalle o şekildede çalışır hatta gerekli olan parametreleri bir tuple'a atıp bunu kontrol ettirebilirim. Fikir için teşekkürler

Batuhan Kızmaz 2 ay

Umut Çakıray sende 2. Checki yapabilir misin yaklasik 2 senedir 1 satir kod yazmadim hata olabilir ufak typo

Ömer Gülsoy
Ö

self. Rdict. Get("smtp_name", None)

Umut Çakıray 2 ay

Dogru o anda aklima neden gelmedi bilemedim, insan paslaniyor uzak kalinca

Ömer Gülsoy 2 ay

Batuhan Kızmaz Umut Çakıray verdigi yontem cok daha anlasilir kod olacaktir o sekilde duzenlesen daha guzel gozukur

Ömer Gülsoy
Ö