Pernyataan semacam ini adalah metode multi-pemrosesan dari beberapa pernyataan kecuali. Mari kita pelajari penyarangan pernyataan coba...kecuali melalui sebuah contoh.
deftest():n=int(input('Ada 3 pernyataan yang akan diuji, silakan pilih (1/2/3):')) ifn==1: #keyError pengecualian my_dict={'dotcpp':123}print ( my_dict['dot'])elifn==2:#IndexError pengecualian my_list=[1,2,3,4,5]print(my_list[100])eli fn==3:#pengecualianNameError print('variabel tidak ada dotcpp:',dotcpp)coba:coba:coba:tes()kecualiKeyError:print('pengecualian KeyError')kecualiIndexError:print('pengecualian IndexError')kecualiNameError: print('Pengecualian NameError')
Kami menguji masing-masing 1/2/3, dan hasil keluarannya adalah sebagai berikut:
Ada 3 pernyataan yang akan diuji, silakan pilih (1/2/3): 1KeyError pengecualian Ada 3 pernyataan yang akan diuji, silakan pilih (1/2/3): 2IndexError pengecualian Ada 3 pernyataan yang akan diuji, silakan pilih (1/ 2/3): pengecualian 3NameError
Dalam contoh ini, pertama-tama kita memasukkan penilaian n ke dalam fungsi yang ditentukan, dan kemudian memberikan tiga situasi pengecualian berdasarkan nilai n, dan kemudian kita menyarangkan tiga pernyataan try..kecuali di akhir, yaitu Hasil dari pernyataan test() akan melalui tiga tingkat penilaian.
Mekanisme penanganan pengecualian yang lengkap tidak dapat dipisahkan dari pernyataan akhirnya . Fungsi dari pernyataan ini adalah terlepas dari apakah pengecualian terjadi dalam program kita, kode di bawah pernyataan akhirnya akan dieksekusi.
coba:blokkecuali[kesalahan ketik]:deal1akhirnya:deal2
Mari kita lihat struktur ini melalui sebuah contoh:
deftest():n=int(input('Silakan masukkan bilangan bulat:'))print(n)coba:test()kecualiKeyError:print('Pengecualian KeyError')finally:print('pernyataan akhirnya dieksekusi')
Mari masukkan 6 dan dotcpp masing-masing untuk melihat hasilnya:
Silakan masukkan bilangan bulat: 55finally pernyataan telah dieksekusi Silakan masukkan bilangan bulat: dotcppfinally pernyataan telah dieksekusi Traceback(mostrecentcalllast):FileC:/Users/test.py,line5,in<module> test()FileC:/Users/test.py,line2,intestn=int(input('Silakan masukkan bilangan bulat:'))ValueError: invalidliteralforint()withbase10:'dotcpp'
Dari contoh ini kita dapat melihat bahwa pernyataan akhirnya akan dieksekusi terlepas dari apakah ada pengecualian dalam program kita.
Pernyataan last yang kita pelajari di atas adalah pernyataan yang akan dieksekusi terlepas dari apakah ada pengecualian dalam pernyataan tersebut. Pernyataan try...kecuali...else yang akan kita pelajari di bawah hanya akan dieksekusi ketika tidak ada pengecualian yang terjadi dalam program. Struktur sintaksisnya adalah:
coba:blokkecuali[kesalahan ketik]:deal1else:deal2
Mari kita lihat contoh di bawah ini:
deftest():n=int(input('Silakan masukkan bilangan bulat:'))print('Nilai masukan adalah:',n)coba:test()kecualiValueError:print('ValueError pengecualian')else:print(' Saat ini Tidak ada pengecualian yang terjadi dalam program')
Outputnya adalah:
Silakan masukkan bilangan bulat: 5. Nilai inputnya adalah: 5. Tidak ada pengecualian pada program saat ini.
Saat kita memasukkan nilai dotcpp
Silakan masukkan bilangan bulat: pengecualian dotcppValueError
Kita dapat melihat bahwa pernyataan else tidak dijalankan ketika program tidak normal. Tidak sulit untuk membedakan pernyataan-pernyataan ini. Anda dapat mempraktikkan pernyataan penanganan pengecualian ini melalui contoh.