Disarankan untuk membuat pengecualian seperti pada python

Biasanya, pengecualian dilemparkan ketika ada beberapa masalah dalam kode. Di Python, kita juga bisa memunculkan exception secara manual

Tetapi mengapa kita mengajukan pengecualian sendiri?

Pertimbangkan skenario di mana kami meminta pengguna untuk memasukkan nomor daftar mereka sebagai masukan. Kita tahu bahwa nomor gulungan hanya bisa berupa angka positif. Jadi, jika pengguna memasukkan nilai non-positif sebagai nomor gulungannya, kami mungkin ingin melontarkan pengecualian

Mungkin ada lebih banyak kasus di mana nilai yang dimasukkan oleh pengguna atau beberapa kode dianggap tidak valid untuk program kita. Dalam kasus tersebut, kami dapat mengajukan pengecualian secara manual

Sepertinya menarik, bukan?

Python Meningkatkan Pengecualian


try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError()

except ValueError:
    print("ValueError Exception thrown")

print("Outside of try-except clauses.")

Silakan masukkan nomor gulungan Anda -5
Pengecualian ValueError dilemparkan
Di luar klausa coba-kecuali

Di dalam klausa try, kami mengambil input dari pengguna. Kemudian kami memeriksa apakah nomor yang dimasukkan oleh pengguna tidak positif. Jika ya, maka kami menaikkan pengecualian

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0 secara manual dengan menulis
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
1. Kami juga menangani pengecualian ini menggunakan klausa kecuali

Perhatikan bahwa dalam contoh di atas, kami telah memunculkan pengecualian tipe

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0. Namun, kami juga dapat menaikkan jenis pengecualian lainnya jika nilai yang dimasukkan tidak positif. Kami memilih untuk menaikkan
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0 karena biasanya
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0 pengecualian dimunculkan ketika beberapa nilai salah. Jadi, disarankan untuk memilih jenis pengecualian yang paling cocok dengan alasan Anda menaikkannya

Demikian pula, pengecualian IndexError dapat dimunculkan menggunakan

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
5

Kami juga dapat mendefinisikan pengecualian yang kami angkat dengan meneruskan nilai ke pengecualian sambil menaikkannya. Mari kita tentukan pengecualian

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
_0 yang kita angkat pada contoh sebelumnya

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
_

Silakan masukkan nomor gulungan Anda -5
Pengecualian ValueError dilemparkan
Angka yang dimasukkan tidak positif
Di luar klausa coba-kecuali

Dalam contoh ini, saat menaikkan pengecualian

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0, kami memberikan string "Angka yang dimasukkan tidak positif" ke dalamnya. Nilai yang diteruskan ini berfungsi sebagai definisi dari pengecualian yang dimunculkan. Oleh karena itu, saat mencetak
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
_0 (dalam bentuk v) di dalam klausa kecuali, definisi pengecualian ini (nilai string diteruskan saat menaikkan pengecualian) dicetak

Kami dapat meningkatkan sejumlah pengecualian dari klausa try

Mari kita ambil contoh lain. Misalkan kita mengadakan webinar di mana hanya siswa dari kelompok usia 5 hingga 20 tahun yang diizinkan. Jika ada siswa yang tidak termasuk dalam kelompok usia ini yang mencoba mendaftar, maka kami akan memberikan pengecualian

try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

Masukkan usia Anda 26
Pengecualian ValueError dilemparkan
Tidak diizinkan. Usia Anda lebih dari 20 tahun

Dalam contoh ini, kami meminta pengguna untuk memasukkan usia. Jika usia yang dimasukkan kurang dari 5, maka kami melemparkan pengecualian

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0 dengan definisi, dan jika usia lebih besar dari 20, maka kami melemparkan pengecualian
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0 lainnya dengan definisi lain. Anda dapat menjalankan program ini dan memeriksa hasilnya untuk masukan yang berbeda

Lihatlah contoh lain

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")
    print(num)

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

except:
    print("Some error occurred")

print("Outside of try-except clauses.")

Masukkan nomor rol Anda 5
Beberapa kesalahan terjadi
Di luar klausa coba-kecuali

Di sini kami dengan paksa melemparkan pengecualian

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
_0 jika angka yang dimasukkan tidak positif. Kami menangani
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0 pengecualian dengan yang pertama kecuali klausa. Semua jenis pengecualian lainnya ditangani oleh blok kecuali generik kedua. Dalam contoh ini, kami memberikan 5 sebagai input sehingga tidak ada pengecualian ValueError yang muncul, tetapi pernyataan print(num) melontarkan pengecualian NameError karena variabel num tidak didefinisikan. Pengecualian ini ditangani oleh klausa kecuali yang kedua

Saat mengajukan pengecualian, jika kami tidak yakin tentang jenis pengecualian mana yang harus kami ajukan, maka kami dapat mengajukan pengecualian umum

try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
3 seperti yang ditunjukkan di bawah ini

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise Exception("The number entered is not positive")

except Exception as e:
    print(e)

print("Outside of try-except clauses.")

Silakan masukkan nomor gulungan Anda -5
Angka yang dimasukkan tidak positif
Di luar klausa coba-kecuali

Anda pasti sudah paham dengan contoh ini. Kami menaikkan Pengecualian umum saat nilai yang dimasukkan tidak positif

Hingga saat ini, kami telah meningkatkan Pengecualian generik atau pengecualian bawaan tertentu seperti

try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
4,
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0, dll dengan Python. Kami juga dapat membuat pengecualian kami sendiri

Python Mendefinisikan Pengecualian Kita Sendiri


Sebelum belajar membuat exception baru, mari kita lihat apa itu kelas exception

Semua pengecualian yang kami pelajari sampai sekarang adalah kelas bawaan di Python. Jadi,

try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
6,
try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
7 dan semua pengecualian lainnya adalah kelas bawaan.  

Kita juga tahu bahwa semua kelas adalah subkelas dari kelas objek. Kelas objek adalah kelas bawaan di Python. Demikian pula, semua kelas pengecualian adalah subkelas langsung atau tidak langsung dari kelas

try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
3 bawaan. Jadi, pengecualian seperti
try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
_6,
try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
7,
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
0, dll adalah subkelas dari kelas Pengecualian. Juga, kelas Pengecualian itu sendiri adalah subkelas dari kelas objek. Mari kita buktikan ini

print(issubclass(ValueError, Exception))
print(issubclass(Exception, object))

Dari contoh ini, kita dapat melihat bahwa

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

print("Outside of try-except clauses.")
_0 adalah subkelas dari
try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
3 dan
try:
    age = int(input("Please enter your age"))
    if age < 5:
        raise ValueError("Not allowed! Your age is less than 5")

    if age > 20:
        raise ValueError("Not allowed! Your age is greater than 20")

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)
3 adalah subkelas dari kelas
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")
    print(num)

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

except:
    print("Some error occurred")

print("Outside of try-except clauses.")
5

Sekarang, mari buat pengecualian kita sendiri

# defining a new exception named MyCustomError
class MyCustomError(Exception):
    pass

# raising the error
raise MyCustomError

Traceback (panggilan terbaru terakhir)
Berkas "skrip. py", baris 6, di
naikkan MyCustomError __main__. MyCustomError

Kami membuat pengecualian baru bernama

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")
    print(num)

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

except:
    print("Some error occurred")

print("Outside of try-except clauses.")
_6 yang mewarisi kelas Pengecualian dan menaikkan pengecualian ini menggunakan kata kunci kenaikan dengan menulis
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")
    print(num)

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

except:
    print("Some error occurred")

print("Outside of try-except clauses.")
7

Lihatlah contoh lain

# defining a new exception named MyCustomError
class MyCustomError(Exception):
    pass

roll = int(input("Please enter your roll number"))
if roll <= 0:
    raise MyCustomError("The number entered is not positive")

Silakan masukkan nomor gulungan Anda -5
Traceback (panggilan terbaru terakhir)
Berkas "skrip. py", baris 7, di
raise MyCustomError("Angka yang dimasukkan tidak positif")
__utama__. MyCustomError. Angka yang dimasukkan tidak positif

Di sini jika pengguna memasukkan nilai non-positif, kami meningkatkan pengecualian kami dengan meneruskan nilai "Angka yang dimasukkan tidak positif" yang berfungsi sebagai deskripsinya. Anda dapat melihat bahwa pesan kesalahan yang kami dapatkan saat pengecualian dimunculkan sangat mirip dengan yang kami dapatkan saat beberapa pengecualian bawaan dilontarkan

Jika kita ingin membuat beberapa kelas pengecualian khusus, maka praktik yang baik adalah membuat kelas pengecualian dasar khusus dan mewarisi semua kelas pengecualian lainnya dari kelas dasar ini. Ini juga merupakan praktik yang baik untuk menyimpan kode minimal di dalam kelas pengecualian.  

class Error(Exception):
    """Base class for all exceptions"""
    pass

class PasswordSmallError(Error):
    """Raised when the input password is small"""
    pass

class PasswordLargeError(Error):
    """Raised when the input password is large"""
    pass

class PasswordInvalidError(Error):
    """Raised when the input password is invalid"""
    pass

Kami membuat kelas pengecualian dasar bernama

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")
    print(num)

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

except:
    print("Some error occurred")

print("Outside of try-except clauses.")
8. Semua kelas pengecualian lainnya dibuat sebagai subkelasnya

Sekarang mari kita lihat contoh di mana kita akan meminta pengguna memasukkan kata sandi. Jika kata sandi yang dimasukkan oleh pengguna terlalu pendek atau terlalu panjang, maka kami akan memberikan pengecualian

# defining exceptions

class Error(Exception):
    """Base class for all exceptions"""
    pass

class PasswordSmallError(Error):
    """Raised when the input password is small"""
    pass

class PasswordLargeError(Error):
    """Raised when the input password is large"""
    pass

try:
    password = input("Enter a password")

    if len(password) < 6:
        raise PasswordSmallError("Password is short!")

    if len(password) > 15:
        raise PasswordLargeError("Password is long!")
	
except PasswordSmallError as ps:
    print(ps)

except PasswordLargeError as pl:
    print(pl)

Masukkan kata sandi abcd
Kata sandi pendek

Anda pasti sudah mengerti kodenya. Kami meminta pengguna untuk memasukkan kata sandi, dan menaikkan pengecualian

try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise ValueError("The number entered is not positive")
    print(num)

except ValueError as v:
    print("ValueError Exception thrown")
    print(v)

except:
    print("Some error occurred")

print("Outside of try-except clauses.")
9 jika panjang kata sandi kurang dari 6 karakter dan pengecualian
try:
    roll = int(input("Please enter your roll number"))
    if roll <= 0:
        raise Exception("The number entered is not positive")

except Exception as e:
    print(e)

print("Outside of try-except clauses.")
0 jika panjangnya lebih dari 15 karakter. Kami juga menyerahkan kedua pengecualian dalam klausa kecuali yang berbeda

Untuk belajar dari video sederhana, Anda selalu dapat melihat kursus video Python kami di CodesDope Pro. Ini memiliki lebih dari 500 soal latihan dan lebih dari 20 proyek

Haruskah saya menggunakan pengecualian dengan Python?

Alasan untuk menggunakan coba/kecuali adalah ketika Anda memiliki blok kode untuk dieksekusi yang terkadang akan berjalan dengan benar dan terkadang tidak , bergantung pada .

Untuk apa pengecualian Python digunakan?

Exception adalah kesalahan yang terjadi selama eksekusi program. Setiap kali ada kesalahan, Python menghasilkan pengecualian yang bisa ditangani. Ini pada dasarnya mencegah program macet .

Apa saja 3 jenis pengecualian utama di Python?

Terutama ada tiga jenis kesalahan yang dapat dibedakan dalam Python. kesalahan sintaks, pengecualian, dan kesalahan logis .

Apa cara menangani pengecualian dengan Python?

The coba dan kecuali Blokir . Menangani Pengecualian. Blok coba dan kecuali di Python digunakan untuk menangkap dan menangani pengecualian. Python mengeksekusi kode mengikuti pernyataan try sebagai bagian "normal" dari program. Kode yang mengikuti pernyataan exception adalah respons program terhadap pengecualian apa pun di klausa try sebelumnya.