Bu dersin başında, hataları tartışacağımız ve istisna işleme hatalarının kodunuzda olması gerektiği konusuna
tekrar hoş geldiniz.
Hiç kimse mükemmel değildir ve hatalar özellikle başkası sizin kodunuzu beklenmedik bir
şekilde kullanmaya başladığında ortaya çıkacaktır.
Gelecekte kodumuzda ortaya çıkabilecek muhtemel hataları planlamak amacıyla hata işleme
yöntemini kullanabiliriz.
aslında yalnızca modu açıldığında dosyaya yazmaya çalışıyor olabilir; programlarımızda tüm komut dosyalarının duracağı
herhangi bir hata var ve bir takım hata bildirimi geri alacağız.
Örneğin, belki de kodunuzun bir bölümünde dosyayı açmaya çalışıyorsunuz, böylece daha
sonra başkası sizin kodunuzu kullanıyor ve kullanıcı
Aslında hata giderme işlevini kullanarak komut dosyası devam edip diğer koda izin verebilir ve hatayı rapor edebiliriz.
Dolayısıyla bir hata olsa bile kod hatayı bildirir ve devam eder.
Şimdi bu istisna işleme süreci için üç anahtar sözcük var.
Ve haricinde denemek.
Ve nihayet anahtar kelimeler ve bunların hepsiyle ilişkili bir kod bloğu olacak.
altında, denenmesi gereken kod bloğu var ve bu bir hataya neden olabilir veya olmayabilir.
Dolayısıyla deneme bloğu
Dolayısıyla, bir kez hata gerçek try bloğu deneyin, kabul blok var ve bu deneme
bloğu içinde herhangi bir hata durumunda çalıştırılacak bir blok kodu.
Sonra bir istisna veya hata olmasına bakılmaksızın, daima çalıştırılan son bir kod
bloğu olan nihai bir kod bloğunuz var.
Şimdi dizüstü bilgisayara atlayıp bu blokların nasıl kullanılacağına dair bazı örneklere bakalım.
TAMAM.
Gerçekte ortaya çıkabilecek bazı hata örneklerini inceleyerek başlayalım.
Biraz ek işlevin aldığı çok basit bir işleve sahip olduğumuzu düşünelim ve sonra bir ve iki ve
daha sonra bunların toplamını ve bir artı ve ikisini yazdıran işi burada sorun diye
düşünebilirsiniz.
Ben sadece 10 ve 20 eklemek, 30 yaşına geri döneceğini söyleyeceğim.
Fakat şu durumu yaşadığınızı düşünelim.
Bir numaralı değişkende bir numara var.
Bunu 10'a eşit olarak ayarladın.
ikinci bir numarayı girdi olarak almak için ve iki numara'nın girişine eşit olduğunu varsayalım.
Ardından bir grup kodunuz var ve daha sonra
Lütfen.
Bir numara sağlayın.
Dolayısıyla lütfen bize bir numara girmenizi ister.
20 diyelim ve sonra ne bittiğini biz de 1 numaralı ve iki numaralı fonksiyonu tekrar aramama
izin söylüyorlar.
Umarım, bunun bir hata yapacağının farkına varırsınız, çünkü buradaki giriş
işlevi 20'yi çağırdığınızda fark aslında hatırlamaktır.
Bu yüzden bunu çalıştırdığımda hey tipinde bir hata olduğunu söylüyor.
Python'un size tip hatası hakkında bilgi vermeye çalıştığı ve desteklenmeyen işlem
tipi olarak dört artı tamsayı ve dize olduğunu söyleyen gerçek bir özel durum var.
Yani temelde size iki tamsayı birlikte ekleyebileceğiniz bir dize veya tamsayı ekleyemeyeceğimi söylüyorum ya da
iki dizeyi bir araya getirebiliyorum ama bu iki veri türü ile çalışamıyorum.
Ve bu, kodunuzu çalıştırırken alabileceğiniz türden bir hatanın bir örneğidir.
Ve ne yazık ki, bir yazılı bildirimde bulunmak istedim diyelim.
O halde bir şey olduğunu söyleyelim.
Ve ben bunu çalıştırıyorum, bu baskı ifadesi asla gerçekleşmeyecek.
Olması gereken şey bir hata.
Ve bu benim senaryumun sonu.
Bu kod bloğunu geçiren yüzlerce satırsamın olması önemli değil.
Hala bu tür hata alacağım ve idam edilecek başka bir şey kalmayacak.
Deney ve kabul ve nihayet ifadelerin arkasındaki fikir, şimdiye kadar olsa bile
bu kod bloğunu yapmaya çalışacağımızdır.
Ve bir hata olsa bile, biraz daha kodla devam edebiliriz.
Peki bunu nasıl yapacağız.
Peki biz iki nokta üst üste iki nokta üstüste denemek zorunda.
Sonra da kod bloğumuz var.
Yani denemek istediğiniz kod budur.
Dolayısıyla bu kodu denemek istersiniz ancak bir hata oluşabilir.
Yani sonuç burada 10 artı 10'a eşit olduğumu söyleyeceğim.
Yani bunun bir hata teşkil etmeyeceğini biliyoruz.
Ve sonra burada yapacağım, kod bloğum dışına çıkacağım.
Dolayısıyla, kod bloğum dışında, bir hata oluştuğunda yapmamı istediğim şey bu; bu gerçekten yaygın.
Diğer kişilerin kullanacakları daha büyük kitaplıkları inşa ederken, blok
haricinde bir kullanıcıya daha özel bir mesaj yazdırabilirsiniz.
Belki de doğru eklemediğinize benziyor görünebilir.
Bu yüzden bu işi ben yapacağım.
Aslında havaya neden olmaz.
Bunun yerine, hiçbir problemi olmadan sonuçları burada arayabilirim, çünkü Templeton'un herhangi bir problemi olmadığı için mantıklıdır.
Şimdi şu havayı yaratalım.
Burada 10 dizesine 10 tamsayısını eklemeye çalışacağım.
Şimdi bunu çalıştırdığımda, hey eklemediğinize benziyor diyor.
Şimdi burada ne olduğuna dikkat et.
Kod bloğunun geri kalanı, daha önce olduğu gibi bir tür hata yaşadığımdan dolayı
tüm programımın kapanmadığı kabul beyanıyla yine de yürütülebildi.
Bunun yerine bu kod bloğunu denedim ve dedim ki dışında ve genelde şunu söyleyebilirim: Herhangi
bir türde hata varsa bu kodu burada yapın.
Şimdi, bir istisna olmazsa bir kod bloğunun çalışmasını hayal edelim.
Böyle bir şey yapabilirim.
Söyleyebilirim.
Else Prens sonuçları ve bunun üzerine Prens reklamı iyi geçti diyebilirim.
Bu yüzden şimdi şunu çalıştırdığımda doğru şekilde kodlamadığınıza benziyor hey.
Yani bu bir deneme olarak bilinir.
Dışında.
Başka deyim.
Ve burada sahip olduğumuz, deneyeceğimiz kod bloğudur.
Ve sonra iki seçeneğimiz var.
Deneme bloğunda bir hata varsa, hariçten harici kodu çalıştırırız.
Burada bir hata yoksa, bunu çalıştırırız.
Başka kod.
Bu yüzden bunu düzeltelim ve artık bir hata üretmeyelim.
Bunu çalıştırıyoruz.
Başarılı olduğu için bu kod bloğunu deneriz.
Bunu kod bloğu dışında yürütmüyoruz.
Bunun yerine doğrudan başkasına atlıyoruz ve reklam düzgün gitti ve biz 20 var diyoruz.
TAMAM.
Hadi deneyelim.
Dışında.
Başka bir deyişle, nihayet anahtar kelimeyi bir kod bloğuna sahip olarak kullanabiliriz.
Daima çalıştırmak.
Bir hata olup olmamasına bakılmaksızın.
Bu yüzden göstermek için aslında bazı dosyaları yazmaya çalışacağımız bir örnek oluşturacağız.
Bu yüzden deneme kavramını keşfedelim.
Ve son olarak yeni bir örnek üzerinde çalışarak ve bu örnekte bir dosya açmaya çalışacağız, böylece
bazı test dosyamız olacak ve W modunda açarak başlayacağız.
Doğru mod, dosyayı açmamıza, yazmamıza veya mevcut değilse dosyayı
oluşturmamıza izin veriyor.
Ve sonra doğruyu söyleyeceğim ve bu dosyaya bir test satırı yazacağım ve sonra dışında söyleyeceğim ve
burada iki nokta üst üste harici diyebilirim ve herhangi bir hata hariç.
örneğin bu tür hata dışında yalnızca deneyebileceğim bazı hatalar var.
Ancak aslında,
Öyleyse ne olur fark edilir.
Bu özel tür hatası vardı.
Yapabileceğim şey, yalnızca bir tür hatası çıktığında hey demektir.
Bir tür hatası vardı.
Sonra dosyaların açılması ve yazılmasıyla ilişkili olan başka bir hatayı deneyebilirim.
Ve dokümantasyona giderseniz hata ve istisnalara gidebilir ve bu genel olarak söz dizimi
hatalarını ve istisnaları açıklar.
Ancak orada bir bağlantı olduğunu göreceksiniz, burada belgelerin 5. Bölümüne atlayan istisnai bir
yapı var ve bu aslında gerçekleşebilecek tüm özel durum ve hataların farklı
türlerinin bir listesidir.
Yani orada çağırmaya devam ederseniz orada bir onaylama hatası var ve dosya hatası içe aktarma hataları endeks hataları
var.
Görmediğiniz şeylerin çoğundan önce görmüş olabileceğiniz bazıları var OS hataları yineleme
hataları tüm farklı hataları taşıyor.
Özel olarak yakalamayı deneyebilirsiniz.
Bu durumda bizim durumumuzda, açtığınızda ve izinlere sahip olmadığınız dosyalara yazarken ortaya
çıkacak bir hata iletisi bir OS'dur.
Err.
Ve bir OS havasına sahip olduğunuz ödemeyi yazdıracağınızdan, sahip olduğunuz python sürümüne bağlı olarak kendi hava olduğumu söyleyebilir
ve daha sonra nihai bir engel ekleyeceğiz ve nihayet bu engel hiçbir zaman ne
olursa olsun.
Demek ki şimdi hep bunu yapmaya başlıyorum ve şu an geri döneceğiz.
Hep kaçarım
Aslında burada neler oluyor.
İşe yaradığımız deneme dosyasını açıkça açtığımız için sağdaki blok çalışması dışında hiçbir işe sahip değiliz ve
blok çalışması dışında bu işe sahip değiliz.
Bu yüzden nihayet bastığımı söylüyorum.
Hep kaçarım
Şimdi aslında Okundu Olarak Okundu Olarak Açılmasıyla Bir Hata Oluşturur Bu salt okunur izin.
Bu yüzden, dosyaya yazmaya çalışırken bu satırda bir hata bulmalıyız.
Şimdi bir tür hata almamalıyız, çünkü bu aslında aldığımız hata değil.
Bunun yerine bir OS hatası almalıyız çünkü yalnızca okuma izniniz olan bir
dosyaya yazmaya çalışmakla ilgili hata.
Bu yüzden eğer ben koşarsam geri alırım.
Hey bir OS hatanız var.
Ve geçen zamanımızdan farklı olarak, bunun dışında yalnızca bu bloklardan sadece biri olan
finally bloğu çalışacak ve finally bloğu çalışacak ve ardından finally bloğu çalışacak.
sıralayabileceğiniz budur. Belirli hatalar için yazdırabileceğiniz belirli hatalar için buraya yazım hatası
olduğunu söyleyelim ve sadece söylemek isterseniz diğer tüm türlerini ezberlemek istemezsiniz. Bunun sonunda.
Ve özel şeyler olması için bir grup istisnayı nasıl
Bu, diğer tüm istisnalar olacaktır.
Böylece tüm diğer istisnalar ve her tekrarlar.
Ve tüm diğer istisnalar diyor çünkü tanımladığımız tür hatası veya diğer
hataları algılamadı.
Öyleyse sadece iki nokta haricinde bu hatayı yazdıracağınızı söylerseniz.
TAMAM.
kod bloklarınızın şu şekildeymiş gibi görüneceğini Python'da başladıkça unutmayın.
Dolayısıyla, muhtemelen tüm hata türlerini ezberlemeyeceğiniz ve muhtemelen
Deneyin.
Dışında.
Ve sonunda.
Dolayısıyla sadece deneme bloğunu tekrarlamak, deneme deyiminde bir hata
olduğunda kod bloğu haricinde denemeye çalıştığınız kod bloğudur.
Ardından, nihai bir blok burada, bir hata olup olmadığına bakılmaksızın çalışacak bir seçenek
koyma seçeneğine sahipsiniz veya bir hata olmadığında yalnızca X-2'ye gidecek bir ELSE engelleme kodunuz olabilir.
Tamam o halde burada bir kez daha odaklanalım.
Şu anda orada hiçbir yerde hata olmayacak çünkü orada olacağını söylediler.
Eğer ben koşarsam geri çekerim.
Hep kaçarım
Yani hata yok.
Sonunda blok hala çalışır.
Bir hataya neden oluyoruz.
Tüm diğer istisnaları söylüyoruz çünkü sadece söylüyorum ve genelde burada ne olursa olsun.
Bu kod bloğu sonunda bu kod bloğunu yapar diyor.
Dolayısıyla, nihayetinde, her zaman çalıştırılacak bir hata varsa engellenir.
Bu nedenle, bir kullanıcıdan belirli bir türde girdi elde etmeye çalışan bir
işlevin içerisini engelleyen hileleri nasıl kullanacağınızı göstererek tartışmamızı bitirelim.
Yani biz burada yapacağımız şu:
DPF'nin ben isteyeceğini söyleyeceğiz. Bu işlevin yaptığı şey, kullanıcıdan bir tamsayı sormaya çalışacak olmasıdır.
Bu yüzden aşağıda söyleyeceğim.
Sonuç girmeye çalışın lütfen girdinin tamsayısına eşittir.
Numarayı verin ve burada hata yaparsak ve
söyleyeceksek, sayıları yazdırmayacağım ve kim bilir bir numara değil.
Ve nihayetinde nihayet basıp tri olarak söyleyeceğim.
Bu yüzden bunu çalıştırıyorum ve bu işlevi biraz ileri yineleyeceğiz ancak
şu anda bu işlevi arayacağım.
Vardiyayı girin girin.
Lütfen bana bir numara vermemi ister.
sağlayan bir sayı değil, mantıksız.
20 verelim, ben de alıp denemelisin, çünkü sonuçta 20'yi tamsayısına başarıyla atamamış ya da 20'ye dönüştürmemizi
Ama hücrenizi bir daha çalıştırırsam ne olur?
Ve şimdi bir kelime veriyorum.
Şimdi biliyorum ki dizeleri tamsayıya dönüştürmem kesinlikle mümkün.
Bu yüzden onu çalıştırdığımda bunun bir numara olmadığını kime anlattığını söylüyor.
Şimdi denememiz bitti.
Sonunda hariç.
Şimdi bir blok döngüsünü denemek için sürekli while döngüsünü nasıl kullanabileceğimizi görelim.
Ve orada bir hata olursa olsun.
Tamam, bu işlevi, eğer yanlış kelimeyi girdikten
sonra bitmek yerine, bir while döngüsünün içine koyacağız, böylece tekrar tekrar
bir blok bloğuna sahip olduğunuza göre ayarlayıp bırakamayacağımızı göreceğiz. istisna yok.
Bu yüzden ben doğru yapacağım ve süre yaparken her zaman dikkatli olmalısınız.
Doğrudur çünkü temelde, while döngüsünden kurtulmak için bir yere
bir break ifadesi kullanmanız gerektiği anlamına gelir.
Tüm bu vurgulanan tüm hit sekmesini burada girintilendirmek için gidiyorum ve ben vahşi doğru söyleyeceğim.
Bu sonucu girdi olarak alın, o zaman ben bir sayı değilse, deyin.
Sonra bunu biraz daha okunaklı hale getirmeye devam edeceğimi söyleyeceğim.
Şu anda olan mantığı olarak, söyleyeceğim bir hata olmadığını söyleyelim.
Elswyth'i sonunda burada birleştirebilirsiniz.
Bu yüzden bu kod bloğunu deneyeceğiz.
Eğer bir hata varsa, ben bunun bir numara olmadığını kime söyleyeceğim.
Başka anlamlara devam edin, istisna yoktur.
Bu, kullanıcı bir tam sayı sağladığı anlamına gelir.
Bu yüzden evet derim.
Teşekkür ederim.
Şimdi bu döngüden kopmak gerekiyor.
Yani şunu söyleyeceğim: Break ifadesi,
döngü döngü için döngü kapatma döngüsüne kadar yükseldiğini ve daha sonra sona erdiğini hatırlayan mola.
Bu while döngüsünü bitirin.
Sonra sonunda söyleyeceğiz ve nihayetinde bir denemelisin.
sadece çok yapabiliriz o prensin hep başımda olacağından emin ol.
Tamam, bu dört kod bloğunu bizim doğruyumun içine koyduk ve bir kereliğine evet teşekkür ederim dediklerini
çözelim ve nihayet haricinde baskı ve denemeyi dile getiren bir Son cümleye sahip olacağız ve bunu
Dolayısıyla ne olursa olsun bir hata var ya da değil bu son kod bloğu daima çalışacak.
Dolayısıyla bu işlemi bir tam sayı isteyeceğiz.
20 hit girdik diyelim tam bir tam sayı sağlamak.
Evet diyor.
Teşekkür ederim.
Ve denemek dışında nihayetinde en sonunda koşacağım.
Verelim.
Bir dize, q vuruşunun girildiğini ve kimin ne olduğunu söyler.
Bu bir numara değil denemek.
Sonunda hep sonunda çalışacağım.
Ancak burada gerçek var ve bu mola henüz gerçekleşmedi.
Demek ki bir numara vermek için başka şansımız var.
Q Tekrar söyler Whoops again.
kadar sizden girdi istemeye devam edecektir.
Ve yanlış şeyleri tekrar tekrar sağlamaya devam edebilirsiniz ve nihayet bir tamsayı olarak atıf yapılabilen bir şey sağlanıncaya
90 diyorsun ve evet diyor.
Teşekkür ederim.
Ve dışında deneyin Sonunda her zaman doğru olacaktır.
Dolayısıyla burada, bir istisna varsa bir şey yaparsanız,
bu kod bloğunu denemek ve ardından başka bir anlamaya devam etmek istiyor, istisna olmadığını söyleyerek burada oluyoruz.
Bir çeşit deyim basabilir ve sonra koparsın.
Ve genelde, istisna olmadığında yalnızca bu konudan kurtulmak isteyeceksiniz.
Sonunda nedense bir şeylerin devam etmesini istiyorsan.
Buradaki iyi bir şey sana tekrar sormak gibi olabilir.
Yeni hat.
Bu nihayet neden söyleyeceğinizin daha gerçekçi bir örneğidir.
Bu yüzden tekrar çalıştırırsam, lütfen numarayı ver dedin.
Ona yanlış cevap veriyoruz.
Numaramızın bu olduğunu söylüyor.
Sana tekrar sayı sormak için sormak istiyorum ve sonra doğru numarayı sağlayabilirsin.
Ve evet diyor.
Teşekkür ederim.
Ne yazık ki sana tekrar sormak istediğimi söyleyecek.
Bu yüzden insanların çoğu kez karıştırmaktan hoşlanmayan bir çok nedeni vardır.
Nihayet ifadeler ama nihai
deyimden kurtulmak yerine yapabileceğiniz yerleri istemeniz halinde
ve sizin gibi kodlarken, lütfen numaramı verin deyin.
Q Bir numara değil de.
Aslında numarayı sağlayıncaya kadar bunu tekrar tekrar yapmaya
devam edebilirsiniz ve Evet deyin deyin Elsin'in bloklarını nihayetinde karıştırmak isteyip istemediğinize bağlı kalabilirsiniz, ancak isterseniz yapabilirsiniz.
Tamam.
Denemenin temelleri budur.
Dışında.
Başka.
Sıra size yeni becerilerinizi test etmek için bir görev vereceğiz.
Onların olup olmadıklarını göreceğiz.