Bu dersin banda, hatalar tartacamz ve istisna ileme hatalarnn kodunuzda olmas gerektii konusuna
tekrar ho geldiniz.
Hi kimse mkemmel deildir ve hatalar zellikle bakas sizin kodunuzu beklenmedik bir
ekilde kullanmaya baladnda ortaya kacaktr.
Gelecekte kodumuzda ortaya kabilecek muhtemel hatalar planlamak amacyla hata ileme
yntemini kullanabiliriz.
aslnda yalnzca modu aldnda dosyaya yazmaya alyor olabilir; programlarmzda tm komut dosyalarnn duraca
herhangi bir hata var ve bir takm hata bildirimi geri alacaz.
rnein, belki de kodunuzun bir blmnde dosyay amaya alyorsunuz, bylece daha
sonra bakas sizin kodunuzu kullanyor ve kullanc
Aslnda hata giderme ilevini kullanarak komut dosyas devam edip dier koda izin verebilir ve hatay rapor edebiliriz.
Dolaysyla bir hata olsa bile kod hatay bildirir ve devam eder.
imdi bu istisna ileme sreci iin anahtar szck var.
Ve haricinde denemek.
Ve nihayet anahtar kelimeler ve bunlarn hepsiyle ilikili bir kod blou olacak.
altnda, denenmesi gereken kod blou var ve bu bir hataya neden olabilir veya olmayabilir.
Dolaysyla deneme blou
Dolaysyla, bir kez hata gerek try blou deneyin, kabul blok var ve bu deneme
blou iinde herhangi bir hata durumunda altrlacak bir blok kodu.
Sonra bir istisna veya hata olmasna baklmakszn, daima altrlan son bir kod
blou olan nihai bir kod blounuz var.
imdi dizst bilgisayara atlayp bu bloklarn nasl kullanlacana dair baz rneklere bakalm.
TAMAM.
Gerekte ortaya kabilecek baz hata rneklerini inceleyerek balayalm.
Biraz ek ilevin ald ok basit bir ileve sahip olduumuzu dnelim ve sonra bir ve iki ve
daha sonra bunlarn toplamn ve bir art ve ikisini yazdran ii burada sorun diye
dnebilirsiniz.
Ben sadece 10 ve 20 eklemek, 30 yana geri dneceini syleyeceim.
Fakat u durumu yaadnz dnelim.
Bir numaral deikende bir numara var.
Bunu 10'a eit olarak ayarladn.
ikinci bir numaray girdi olarak almak iin ve iki numara'nn giriine eit olduunu varsayalm.
Ardndan bir grup kodunuz var ve daha sonra
Ltfen.
Bir numara salayn.
Dolaysyla ltfen bize bir numara girmenizi ister.
20 diyelim ve sonra ne bittiini biz de 1 numaral ve iki numaral fonksiyonu tekrar aramama
izin sylyorlar.
Umarm, bunun bir hata yapacann farkna varrsnz, nk buradaki giri
ilevi 20'yi ardnzda fark aslnda hatrlamaktr.
Bu yzden bunu altrdmda hey tipinde bir hata olduunu sylyor.
Python'un size tip hatas hakknda bilgi vermeye alt ve desteklenmeyen ilem
tipi olarak drt art tamsay ve dize olduunu syleyen gerek bir zel durum var.
Yani temelde size iki tamsay birlikte ekleyebileceiniz bir dize veya tamsay ekleyemeyeceimi sylyorum ya da
iki dizeyi bir araya getirebiliyorum ama bu iki veri tr ile alamyorum.
Ve bu, kodunuzu altrrken alabileceiniz trden bir hatann bir rneidir.
Ve ne yazk ki, bir yazl bildirimde bulunmak istedim diyelim.
O halde bir ey olduunu syleyelim.
Ve ben bunu altryorum, bu bask ifadesi asla gereklemeyecek.
Olmas gereken ey bir hata.
Ve bu benim senaryumun sonu.
Bu kod blounu geiren yzlerce satrsamn olmas nemli deil.
Hala bu tr hata alacam ve idam edilecek baka bir ey kalmayacak.
Deney ve kabul ve nihayet ifadelerin arkasndaki fikir, imdiye kadar olsa bile
bu kod blounu yapmaya alacamzdr.
Ve bir hata olsa bile, biraz daha kodla devam edebiliriz.
Peki bunu nasl yapacaz.
Peki biz iki nokta st ste iki nokta stste denemek zorunda.
Sonra da kod bloumuz var.
Yani denemek istediiniz kod budur.
Dolaysyla bu kodu denemek istersiniz ancak bir hata oluabilir.
Yani sonu burada 10 art 10'a eit olduumu syleyeceim.
Yani bunun bir hata tekil etmeyeceini biliyoruz.
Ve sonra burada yapacam, kod bloum dna kacam.
Dolaysyla, kod bloum dnda, bir hata olutuunda yapmam istediim ey bu; bu gerekten yaygn.
Dier kiilerin kullanacaklar daha byk kitaplklar ina ederken, blok
haricinde bir kullancya daha zel bir mesaj yazdrabilirsiniz.
Belki de doru eklemediinize benziyor grnebilir.
Bu yzden bu ii ben yapacam.
Aslnda havaya neden olmaz.
Bunun yerine, hibir problemi olmadan sonular burada arayabilirim, nk Templeton'un herhangi bir problemi olmad iin mantkldr.
imdi u havay yaratalm.
Burada 10 dizesine 10 tamsaysn eklemeye alacam.
imdi bunu altrdmda, hey eklemediinize benziyor diyor.
imdi burada ne olduuna dikkat et.
Kod blounun geri kalan, daha nce olduu gibi bir tr hata yaadmdan dolay
tm programmn kapanmad kabul beyanyla yine de yrtlebildi.
Bunun yerine bu kod blounu denedim ve dedim ki dnda ve genelde unu syleyebilirim: Herhangi
bir trde hata varsa bu kodu burada yapn.
imdi, bir istisna olmazsa bir kod blounun almasn hayal edelim.
Byle bir ey yapabilirim.
Syleyebilirim.
Else Prens sonular ve bunun zerine Prens reklam iyi geti diyebilirim.
Bu yzden imdi unu altrdmda doru ekilde kodlamadnza benziyor hey.
Yani bu bir deneme olarak bilinir.
Dnda.
Baka deyim.
Ve burada sahip olduumuz, deneyeceimiz kod bloudur.
Ve sonra iki seeneimiz var.
Deneme blounda bir hata varsa, hariten harici kodu altrrz.
Burada bir hata yoksa, bunu altrrz.
Baka kod.
Bu yzden bunu dzeltelim ve artk bir hata retmeyelim.
Bunu altryoruz.
Baarl olduu iin bu kod blounu deneriz.
Bunu kod blou dnda yrtmyoruz.
Bunun yerine dorudan bakasna atlyoruz ve reklam dzgn gitti ve biz 20 var diyoruz.
TAMAM.
Hadi deneyelim.
Dnda.
Baka bir deyile, nihayet anahtar kelimeyi bir kod blouna sahip olarak kullanabiliriz.
Daima altrmak.
Bir hata olup olmamasna baklmakszn.
Bu yzden gstermek iin aslnda baz dosyalar yazmaya alacamz bir rnek oluturacaz.
Bu yzden deneme kavramn kefedelim.
Ve son olarak yeni bir rnek zerinde alarak ve bu rnekte bir dosya amaya alacaz, bylece
baz test dosyamz olacak ve W modunda aarak balayacaz.
Doru mod, dosyay amamza, yazmamza veya mevcut deilse dosyay
oluturmamza izin veriyor.
Ve sonra doruyu syleyeceim ve bu dosyaya bir test satr yazacam ve sonra dnda syleyeceim ve
burada iki nokta st ste harici diyebilirim ve herhangi bir hata hari.
rnein bu tr hata dnda yalnzca deneyebileceim baz hatalar var.
Ancak aslnda,
yleyse ne olur fark edilir.
Bu zel tr hatas vard.
Yapabileceim ey, yalnzca bir tr hatas ktnda hey demektir.
Bir tr hatas vard.
Sonra dosyalarn almas ve yazlmasyla ilikili olan baka bir hatay deneyebilirim.
Ve dokmantasyona giderseniz hata ve istisnalara gidebilir ve bu genel olarak sz dizimi
hatalarn ve istisnalar aklar.
Ancak orada bir balant olduunu greceksiniz, burada belgelerin 5. Blmne atlayan istisnai bir
yap var ve bu aslnda gerekleebilecek tm zel durum ve hatalarn farkl
trlerinin bir listesidir.
Yani orada armaya devam ederseniz orada bir onaylama hatas var ve dosya hatas ie aktarma hatalar endeks hatalar
var.
Grmediiniz eylerin oundan nce grm olabileceiniz bazlar var OS hatalar yineleme
hatalar tm farkl hatalar tayor.
zel olarak yakalamay deneyebilirsiniz.
Bu durumda bizim durumumuzda, atnzda ve izinlere sahip olmadnz dosyalara yazarken ortaya
kacak bir hata iletisi bir OS'dur.
Err.
Ve bir OS havasna sahip olduunuz demeyi yazdracanzdan, sahip olduunuz python srmne bal olarak kendi hava olduumu syleyebilir
ve daha sonra nihai bir engel ekleyeceiz ve nihayet bu engel hibir zaman ne
olursa olsun.
Demek ki imdi hep bunu yapmaya balyorum ve u an geri dneceiz.
Hep kaarm
Aslnda burada neler oluyor.
e yaradmz deneme dosyasn aka atmz iin sadaki blok almas dnda hibir ie sahip deiliz ve
blok almas dnda bu ie sahip deiliz.
Bu yzden nihayet bastm sylyorum.
Hep kaarm
imdi aslnda Okundu Olarak Okundu Olarak Almasyla Bir Hata Oluturur Bu salt okunur izin.
Bu yzden, dosyaya yazmaya alrken bu satrda bir hata bulmalyz.
imdi bir tr hata almamalyz, nk bu aslnda aldmz hata deil.
Bunun yerine bir OS hatas almalyz nk yalnzca okuma izniniz olan bir
dosyaya yazmaya almakla ilgili hata.
Bu yzden eer ben koarsam geri alrm.
Hey bir OS hatanz var.
Ve geen zamanmzdan farkl olarak, bunun dnda yalnzca bu bloklardan sadece biri olan
finally blou alacak ve finally blou alacak ve ardndan finally blou alacak.
sralayabileceiniz budur. Belirli hatalar iin yazdrabileceiniz belirli hatalar iin buraya yazm hatas
olduunu syleyelim ve sadece sylemek isterseniz dier tm trlerini ezberlemek istemezsiniz. Bunun sonunda.
Ve zel eyler olmas iin bir grup istisnay nasl
Bu, dier tm istisnalar olacaktr.
Bylece tm dier istisnalar ve her tekrarlar.
Ve tm dier istisnalar diyor nk tanmladmz tr hatas veya dier
hatalar alglamad.
yleyse sadece iki nokta haricinde bu hatay yazdracanz sylerseniz.
TAMAM.
kod bloklarnzn u ekildeymi gibi grneceini Python'da baladka unutmayn.
Dolaysyla, muhtemelen tm hata trlerini ezberlemeyeceiniz ve muhtemelen
Deneyin.
Dnda.
Ve sonunda.
Dolaysyla sadece deneme blounu tekrarlamak, deneme deyiminde bir hata
olduunda kod blou haricinde denemeye altnz kod bloudur.
Ardndan, nihai bir blok burada, bir hata olup olmadna baklmakszn alacak bir seenek
koyma seeneine sahipsiniz veya bir hata olmadnda yalnzca X-2'ye gidecek bir ELSE engelleme kodunuz olabilir.
Tamam o halde burada bir kez daha odaklanalm.
u anda orada hibir yerde hata olmayacak nk orada olacan sylediler.
Eer ben koarsam geri ekerim.
Hep kaarm
Yani hata yok.
Sonunda blok hala alr.
Bir hataya neden oluyoruz.
Tm dier istisnalar sylyoruz nk sadece sylyorum ve genelde burada ne olursa olsun.
Bu kod blou sonunda bu kod blounu yapar diyor.
Dolaysyla, nihayetinde, her zaman altrlacak bir hata varsa engellenir.
Bu nedenle, bir kullancdan belirli bir trde girdi elde etmeye alan bir
ilevin ierisini engelleyen hileleri nasl kullanacanz gstererek tartmamz bitirelim.
Yani biz burada yapacamz u:
DPF'nin ben isteyeceini syleyeceiz. Bu ilevin yapt ey, kullancdan bir tamsay sormaya alacak olmasdr.
Bu yzden aada syleyeceim.
Sonu girmeye aln ltfen girdinin tamsaysna eittir.
Numaray verin ve burada hata yaparsak ve
syleyeceksek, saylar yazdrmayacam ve kim bilir bir numara deil.
Ve nihayetinde nihayet basp tri olarak syleyeceim.
Bu yzden bunu altryorum ve bu ilevi biraz ileri yineleyeceiz ancak
u anda bu ilevi arayacam.
Vardiyay girin girin.
Ltfen bana bir numara vermemi ister.
salayan bir say deil, mantksz.
20 verelim, ben de alp denemelisin, nk sonuta 20'yi tamsaysna baaryla atamam ya da 20'ye dntrmemizi
Ama hcrenizi bir daha altrrsam ne olur?
Ve imdi bir kelime veriyorum.
imdi biliyorum ki dizeleri tamsayya dntrmem kesinlikle mmkn.
Bu yzden onu altrdmda bunun bir numara olmadn kime anlattn sylyor.
imdi denememiz bitti.
Sonunda hari.
imdi bir blok dngsn denemek iin srekli while dngsn nasl kullanabileceimizi grelim.
Ve orada bir hata olursa olsun.
Tamam, bu ilevi, eer yanl kelimeyi girdikten
sonra bitmek yerine, bir while dngsnn iine koyacaz, bylece tekrar tekrar
bir blok blouna sahip olduunuza gre ayarlayp brakamayacamz greceiz. istisna yok.
Bu yzden ben doru yapacam ve sre yaparken her zaman dikkatli olmalsnz.
Dorudur nk temelde, while dngsnden kurtulmak iin bir yere
bir break ifadesi kullanmanz gerektii anlamna gelir.
Tm bu vurgulanan tm hit sekmesini burada girintilendirmek iin gidiyorum ve ben vahi doru syleyeceim.
Bu sonucu girdi olarak aln, o zaman ben bir say deilse, deyin.
Sonra bunu biraz daha okunakl hale getirmeye devam edeceimi syleyeceim.
u anda olan mant olarak, syleyeceim bir hata olmadn syleyelim.
Elswyth'i sonunda burada birletirebilirsiniz.
Bu yzden bu kod blounu deneyeceiz.
Eer bir hata varsa, ben bunun bir numara olmadn kime syleyeceim.
Baka anlamlara devam edin, istisna yoktur.
Bu, kullanc bir tam say salad anlamna gelir.
Bu yzden evet derim.
Teekkr ederim.
imdi bu dngden kopmak gerekiyor.
Yani unu syleyeceim: Break ifadesi,
dng dng iin dng kapatma dngsne kadar ykseldiini ve daha sonra sona erdiini hatrlayan mola.
Bu while dngsn bitirin.
Sonra sonunda syleyeceiz ve nihayetinde bir denemelisin.
sadece ok yapabiliriz o prensin hep bamda olacandan emin ol.
Tamam, bu drt kod blounu bizim doruyumun iine koyduk ve bir kereliine evet teekkr ederim dediklerini
zelim ve nihayet haricinde bask ve denemeyi dile getiren bir Son cmleye sahip olacaz ve bunu
Dolaysyla ne olursa olsun bir hata var ya da deil bu son kod blou daima alacak.
Dolaysyla bu ilemi bir tam say isteyeceiz.
20 hit girdik diyelim tam bir tam say salamak.
Evet diyor.
Teekkr ederim.
Ve denemek dnda nihayetinde en sonunda koacam.
Verelim.
Bir dize, q vuruunun girildiini ve kimin ne olduunu syler.
Bu bir numara deil denemek.
Sonunda hep sonunda alacam.
Ancak burada gerek var ve bu mola henz gereklemedi.
Demek ki bir numara vermek iin baka ansmz var.
Q Tekrar syler Whoops again.
kadar sizden girdi istemeye devam edecektir.
Ve yanl eyleri tekrar tekrar salamaya devam edebilirsiniz ve nihayet bir tamsay olarak atf yaplabilen bir ey salanncaya
90 diyorsun ve evet diyor.
Teekkr ederim.
Ve dnda deneyin Sonunda her zaman doru olacaktr.
Dolaysyla burada, bir istisna varsa bir ey yaparsanz,
bu kod blounu denemek ve ardndan baka bir anlamaya devam etmek istiyor, istisna olmadn syleyerek burada oluyoruz.
Bir eit deyim basabilir ve sonra koparsn.
Ve genelde, istisna olmadnda yalnzca 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 syleyeceinizin daha gereki bir rneidir.
Bu yzden tekrar altrrsam, ltfen numaray ver dedin.
Ona yanl cevap veriyoruz.
Numaramzn bu olduunu sylyor.
Sana tekrar say sormak iin sormak istiyorum ve sonra doru numaray salayabilirsin.
Ve evet diyor.
Teekkr ederim.
Ne yazk ki sana tekrar sormak istediimi syleyecek.
Bu yzden insanlarn ou kez kartrmaktan holanmayan bir ok nedeni vardr.
Nihayet ifadeler ama nihai
deyimden kurtulmak yerine yapabileceiniz yerleri istemeniz halinde
ve sizin gibi kodlarken, ltfen numaram verin deyin.
Q Bir numara deil de.
Aslnda numaray salayncaya kadar bunu tekrar tekrar yapmaya
devam edebilirsiniz ve Evet deyin deyin Elsin'in bloklarn nihayetinde kartrmak isteyip istemediinize bal kalabilirsiniz, ancak isterseniz yapabilirsiniz.
Tamam.
Denemenin temelleri budur.
Dnda.
Baka.
Sra size yeni becerilerinizi test etmek iin bir grev vereceiz.
Onlarn olup olmadklarn greceiz.