Kursus
Error dan exception dapat menyebabkan perilaku tak terduga atau bahkan menghentikan eksekusi program. Python menyediakan berbagai fungsi dan mekanisme untuk menangani masalah ini dan meningkatkan ketangguhan kode. Dalam tutorial ini, kita akan mempelajari berbagai jenis error dan fungsi bawaan beserta contohnya.
- Sebuah error adalah masalah kritis dalam kode yang umumnya tidak dapat dipulihkan saat runtime, seperti sintaks yang salah atau indentasi yang keliru.
- Sebuah exception adalah peristiwa runtime yang mengganggu alur normal program tetapi dapat ditangkap dan ditangani, sehingga program bisa tetap berjalan.
Meskipun exception terjadi saat runtime, beberapa error seperti SyntaxError dan IndentationError ditangkap oleh parser sebelum program dijalankan.
Sederhananya, error adalah masalah kritis yang seharusnya tidak ditangkap oleh aplikasi normal, sedangkan exception adalah kondisi yang sebaiknya ditangkap oleh program.

Mari pelajari lebih jauh tentang error dan exception dengan melihat berbagai contoh. Untuk menjalankannya dengan mudah, Anda dapat membuat workbook DataLab secara gratis yang sudah terpasang Python dan berisi semua contoh kode.
Error di Python
Berikut adalah contoh syntax error di mana perintah return di luar fungsi tidak bermakna. Kita tidak seharusnya menangani error di dalam program. Sebagai gantinya, kita harus membuat fungsi yang mengembalikan string tersebut.
return "DataCamp"
Input In [1]
return "DataCamp"
^
SyntaxError: 'return' outside function
Kita telah membuat fungsi tetapi dengan indentasi yang salah. Kita tidak seharusnya menangani error indentasi saat runtime. Kita bisa memperbaikinya secara manual atau menggunakan alat pemformatan kode.
def fun():
return "DataCamp"
Input In [2]
return "DataCamp"
^
IndentationError: expected an indented block
Exception di Python
Kita menjumpai ZeroDivisionError (Exception). Kita dapat menanganinya saat runtime dengan menggunakan blok try dan except.
test = 1/0
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
Input In [4], in <cell line: 1>()
----> 1 test = 1/0
ZeroDivisionError: division by zero
Exception NameError cukup umum terjadi ketika sebuah variabel tidak ditemukan. Kita juga dapat menangani exception ini, baik dengan mengganti variabelnya atau mencetak peringatan.
y = test
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [5], in <cell line: 1>()
----> 1 y = test
NameError
Exception Bawaan Python
Berikut adalah daftar exception default Python beserta deskripsinya:
-
AssertionError: muncul ketika pernyataan assert gagal. -
EOFError: muncul ketika fungsiinput()menemui kondisi end-of-file. -
AttributeError: muncul ketika penetapan atau referensi atribut gagal. -
TabError: muncul ketika indentasi berisi tab atau spasi yang tidak konsisten. -
ImportError: muncul ketika impor modul gagal. -
IndexError: terjadi ketika indeks dari suatu urutan berada di luar jangkauan -
KeyboardInterrupt: muncul ketika pengguna menekan tombol interupsi (Ctrl + C atau Delete). -
RuntimeError: terjadi ketika error tidak masuk ke kategori mana pun. -
NameError: muncul ketika variabel tidak ditemukan dalam scope lokal maupun global. -
MemoryError: muncul ketika program kehabisan memori. -
ValueError: terjadi ketika operasi atau fungsi menerima argumen dengan tipe yang benar tetapi nilai yang salah. -
ZeroDivisionError: muncul ketika Anda membagi suatu nilai atau variabel dengan nol. -
SyntaxError: muncul dari parser ketika sintaks Python salah. -
IndentationError: terjadi ketika ada indentasi yang salah. -
SystemError: muncul ketika interpreter mendeteksi error internal.
Anda dapat menemukan daftar lengkap error dan exception di Python dengan membaca dokumentasi.
Pelajari tentang exception Python dengan mengikuti kursus Object-Oriented Programming in Python kami. Anda akan mempelajari cara membuat class serta memanfaatkan inheritance dan polymorphism untuk menggunakan ulang dan mengoptimalkan kode.
Penanganan Exception dengan try, except, else, dan finally
Setelah mempelajari tentang error dan exception, kita akan belajar menanganinya dengan menggunakan blok try, except, else, dan finally.
Lalu, apa yang dimaksud dengan menanganinya? Dalam keadaan normal, error ini akan menghentikan eksekusi kode dan menampilkan pesan error. Untuk membuat sistem yang stabil, kita perlu mengantisipasi error ini dan menyiapkan solusi alternatif atau pesan peringatan.
Pada bagian ini, kita akan mempelajari apa fungsi setiap blok dan bagaimana menggunakannya untuk menulis kode yang tangguh.
Pernyataan try dan except
Cara paling sederhana menangani exception di Python adalah dengan menggunakan blok try dan except.
-
Jalankan kode di bawah pernyataan
try. -
Ketika sebuah exception muncul, jalankan kode di bawah pernyataan
except.
Alih-alih berhenti pada error atau exception, kode kita akan beralih ke solusi alternatif.

Contoh sederhana
Pada contoh pertama, kita akan mencoba mencetak variabel x yang tidak didefinisikan. Dalam keadaan normal, ini akan memunculkan error dan menghentikan eksekusi, tetapi dengan blok try dan except, kita dapat mengubah perilaku alur eksekusi.
- Program akan menjalankan kode di bawah pernyataan
try. - Karena kita tahu
xbelum didefinisikan, maka ia akan menjalankan pernyataan except dan mencetak peringatan.
try:
print(x)
except:
print("An exception has occurred!")
An exception has occurred!
Contoh multiple except statement
Pada contoh kedua, kita akan menggunakan beberapa pernyataan except untuk menangani beberapa jenis exception.
- Jika exception
ZeroDivisionErrormuncul, program akan mencetak "You cannot divide a value with zero." - Exception lainnya akan mencetak “Something else went wrong.”
Ini memungkinkan kita menulis kode yang fleksibel yang dapat menangani banyak exception sekaligus tanpa terhenti.
Catatan: Hindari menggunakan klausa except: tanpa menyebutkan tipe exception — ini akan menangkap semua hal, termasuk KeyboardInterrupt dan SystemExit, yang dapat membuat program Anda sulit dihentikan dan menyembunyikan bug yang tidak terkait. Selalu tangkap exception spesifik yang Anda harapkan, seperti except ZeroDivisionError:.
try:
print(1/0)
except ZeroDivisionError:
print("You cannot divide a value with zero")
except:
print("Something else went wrong")
You cannot divide a value with zero
Contoh memuat berkas
Sekarang, mari lihat contoh yang lebih praktis.
Pada kode di bawah, kita membaca berkas CSV, dan ketika muncul exception FileNotFoundError, kode akan mencetak error dan pesan tambahan tentang berkas data.csv.
Ya, kita dapat mencetak pesan error default tanpa menghentikan eksekusi.
try:
with open('data.csv') as file:
read_data = file.read()
except FileNotFoundError as fnf_error:
print(fnf_error)
print("Explanation: We cannot load the 'data.csv' file")
[Errno 2] No such file or directory: 'data.csv'
Explanation: We cannot load the 'data.csv' file
try dengan klausa else
Kita telah mempelajari try dan except, kini kita akan mempelajari pernyataan else.
Ketika pernyataan try tidak memunculkan exception, kode masuk ke blok else. Ini adalah penangkal atau opsi cadangan saat Anda memperkirakan bagian skrip akan menghasilkan exception. Umumnya digunakan pada bagian penyiapan singkat atau verifikasi di mana Anda tidak ingin error tertentu tersamarkan.
Catatan: Dalam blok try-except, Anda dapat menggunakan else setelah semua pernyataan except.

Contoh sederhana
Kita menambahkan pernyataan else pada contoh ZeroDivisionError. Seperti terlihat, ketika tidak ada exception, fungsi print di bawah pernyataan else dieksekusi, menampilkan hasilnya.
try:
result = 1/3
except ZeroDivisionError as err:
print(err)
else:
print(f"Your answer is {result}")
Your answer is 0.3333333333333333
Contoh IndexError dengan else
Mari belajar lebih lanjut dengan membuat fungsi sederhana dan mengujinya pada berbagai skenario.
Fungsi find_nth_value() memiliki argumen x (list) dan n (nomor indeks). Kita membuat blok try, except, dan else untuk menangani exception IndexError.
x = [5,8,9,13]
def find_nth_value(x,n):
try:
result = x[n]
except IndexError as err:
print(err)
else:
print("Your answer is ", result)
List x memiliki empat nilai, dan kita akan mengujinya untuk indeks ke-6 dan ke-2.
# Testing
find_nth_value(x,6)
find_nth_value(x,2)
- Pada n=6, exception
IndexErrormuncul, dan kita melihat pesan error default “list index out of range.” - Pada n=2, tidak ada exception yang muncul, dan fungsi mencetak hasil di bawah pernyataan
else.
list index out of range
Your answer is 9
Kata kunci finally di Python
Kata kunci finally dalam blok try-except selalu dieksekusi, terlepas dari ada atau tidaknya exception. Blok finally selalu berjalan setelah try, except, dan else, apa pun exception-nya. Ini sangat berguna untuk membersihkan resource dan menutup objek, khususnya menutup berkas.

Fungsi divide dibuat untuk menangani exception ZeroDivisionError dan menampilkan hasil ketika tidak ada exception. Apa pun hasilnya, ia akan selalu menjalankan finally untuk mencetak “Code by DataCamp” dalam warna hijau.
def divide(x,y):
try:
result = x/y
except ZeroDivisionError:
print("Please change 'y' argument to non-zero value")
except:
print("Something went wrong")
else:
print(f"Your answer is {result}")
finally:
print("\033[92m Code by DataCamp\033[00m")
Pada pengujian pertama, kita membagi 1 dengan 0, yang akan memunculkan exception ZeroDivisionError dan mencetak pesannya. Seperti terlihat, ada baris tambahan setelah pesan error.
divide(1,0)
Please change 'y' argument to non-zero value
Code by DataCamp
Ketika kita menambahkan input yang valid, hasil ditampilkan dengan mengeksekusi blok else dan finally.
divide(3,4)
Your answer is 0.75
Code by DataCamp
Alih-alih integer, kita menambahkan string sebagai argumen kedua, yang memunculkan exception berbeda dari ZeroDivisionError, dengan pesan yang berbeda.
divide(1,'g')
Something went wrong
Code by DataCamp
Dalam ketiga skenario, ada satu hal yang sama. Kode selalu menjalankan fungsi print di bawah pernyataan finally.
Jika Anda baru di Python dan ingin menulis kode seperti programmer sungguhan, coba jalur keahlian Python Programming kami. Anda akan belajar menulis kode efisien, fungsi Python, rekayasa perangkat lunak, unit testing, dan pemrograman berorientasi objek.
Penanganan Exception Bersarang di Python
Kita memerlukan penanganan exception bersarang ketika menyiapkan program untuk menangani beberapa exception secara berurutan. Misalnya, kita dapat menambahkan blok try-except lain di bawah pernyataan else. Jadi, jika pernyataan pertama tidak memunculkan exception, periksa pernyataan kedua dengan sisa kode.
Memodifikasi fungsi divide
Kita memodifikasi fungsi divide dari contoh sebelumnya dan menambahkan blok try-except bersarang di bawah pernyataan else. Jadi, jika tidak ada AttributeError, ia akan menjalankan else dan memeriksa kode baru untuk exception ZeroDivisionError.
def divide(x,y):
try:
value = 50
x.append(value)
except AttributeError as atr_err:
print(atr_err)
else:
try:
result = [i / y for i in x]
print( result )
except ZeroDivisionError:
print("Please change 'y' argument to non-zero value")
finally:
print("\033[92m Code by DataCamp\033[00m")
Pada skenario pertama, kita memberikan list berisi empat nilai x dan penyebut 3. Skrip akan menambahkan 50 ke list, membagi setiap nilai dalam list dengan 3, dan menampilkan hasilnya.
x = [40,65,70,87]
divide(x,3)
Fungsi berhasil dieksekusi tanpa memunculkan exception apa pun.
[13.333333333333334, 21.666666666666668, 23.333333333333332, 29.0, 16.666666666666668]
Code by DataCamp
Alih-alih list, kita memberikan integer pada argumen pertama, yang memunculkan AttributeError.
divide(4,3)
'int' object has no attribute 'append'
Code by DataCamp
Pada skenario terakhir, kita memberikan list, tetapi 0 sebagai argumen kedua yang memunculkan exception ZeroDivisionError di bawah pernyataan else.
divide(x,0)
Please change 'y' argument to non-zero value
Code by DataCamp
Contoh pengeditan berkas
Mari lihat contoh yang lebih praktis tentang memuat berkas, menulis teks, dan menutup berkas.
Fungsi file_editor() akan:
- Memeriksa exception
FileNotFoundErroruntuk fungsiopen(). - Jika exception luar tidak muncul, ia akan memeriksa exception untuk fungsi
write(). - Apa pun yang terjadi, setelah membuka berkas, ia akan menutup berkas dengan menjalankan pernyataan
finally. - Jika pernyataan try luar memunculkan exception, ia akan mengembalikan pesan error dengan path berkas yang tidak valid.
def file_editor(path,text):
try:
data = open(path)
try:
data.write(text)
except:
print("Unable to write the data. Please add an append: 'a' or write: 'w' parameter to the open() function.")
finally:
data.close()
except:
print(f"{path} file is not found!!")
Pada skenario pertama, kita memberikan path berkas dan teksnya.
path = "data.txt"
text = "DataLab: Share your data analysis in a cloud-based environment--no installation required."
file_editor(path,text)
Exception luar muncul.
data.txt file is not found!!
Untuk mengatasi exception file not found, kita harus membuat berkas data.txt menggunakan perintah Linux echo.
!echo "File by DataCamp" > "data.txt"

Setelah itu, jalankan ulang fungsi file_editor().
file_editor(path,text)
Exception dalam muncul, karena fungsi write() tidak dapat menambahkan teks.
Unable to write the data. Please add an append: 'a' or write: 'w' parameter to the open() function.
Untuk mengatasi masalah ini, kita perlu mengubah baris ketiga dari data = open(path) menjadi data = open(path, 'a'). Ini akan memungkinkan kita menambahkan teks baru ke berkas.
Setelah menjalankan ulang fungsi, kita berhasil menambahkan teks ke berkas.
file_editor(path,text)

Penanganan exception bersarang tidak direkomendasikan karena membuat penanganan exception menjadi lebih kompleks; pengembang menggunakan beberapa blok try-except untuk membuat penanganan exception berurutan yang sederhana.
Catatan: Anda juga dapat menambahkan blok try-except bersarang di bawah pernyataan try atau except. Ini tergantung pada kebutuhan Anda.
Menaikkan Exception di Python
Selain menangkap exception, Anda dapat secara sengaja menaikkannya menggunakan kata kunci raise. Ini berguna untuk menegakkan aturan bisnis atau validasi input. Ini memberikan sinyal bahwa ada sesuatu yang salah sebelum menyebabkan kegagalan yang lebih sulit dilacak di bagian hilir.
Untuk melempar exception, kita harus menggunakan kata kunci raise diikuti dengan nama exception.
Contoh menaikkan value error
Kita dapat menaikkan exception dengan menambahkan kata kunci raise dalam pernyataan if/else.
Pada contoh, kita menaikkan ValueError jika nilainya melebihi 1.000. Kita mengubah nilainya menjadi 2.000, yang membuat pernyataan if bernilai TRUE dan menaikkan ValueError dengan pesan kustom. Pesan error kustom membantu Anda menemukan masalah dengan cepat.
value = 2_000
if value > 1_000:
# raise the ValueError
raise ValueError("Please add a value lower than 1,000")
else:
print("Congratulations! You are the winner!!")
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
----> 4 raise ValueError("Please add a value lower than 1,000")
5 else:
6 print("Congratulations! You are the winner!!")
ValueError: Please add a value lower than 1,000
Contoh menaikkan exception
Kita juga dapat menaikkan exception bawaan Python secara acak jika kondisinya terpenuhi. Dalam kasus kita, kita menaikkan Exception generik dengan pesan error.
if value > 1_000:
# raise the Exception
raise Exception("Please add a value lower than 1,000")
else:
print("Congratulations! You are the winner!!")
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
----> 3 raise Exception("Please add a value lower than 1,000")
4 else:
5 print("Congratulations! You are the winner!!")
Exception: Please add a value lower than 1,000
Contoh menangani exception yang dinaikkan
Kita juga dapat membuat exception kustom dan menangani exception tersebut dengan menggunakan blok try-except.
Pada contoh, kita menambahkan contoh value error di bawah pernyataan try.
Lalu, bagaimana cara kerjanya? Alih-alih melempar exception dan menghentikan program, ini akan menampilkan pesan error yang kita berikan.
value = 2_000
try:
if value > 1_000:
# raise the ValueError
raise ValueError("Please add a value lower than 1,000")
else:
print("Congratulations! You are the winner!!")
# if false then raise the value error
except ValueError as e:
print(e)
Jenis penanganan exception ini membantu kita bersiap menghadapi error yang tidak tercakup oleh Python dan spesifik untuk kebutuhan aplikasi Anda.
Please add a value lower than 1,000
Exception chaining dengan raise ... from
Selain menaikkan exception tersendiri, Anda dapat merantai exception menggunakan raise ... from. Ini mempertahankan exception asli sebagai konteks, membuat traceback jauh lebih jelas saat satu error menyebabkan error lainnya.
try:
open("config.json")
except FileNotFoundError as e:
raise RuntimeError("App failed to start: config file missing") from e
FileNotFoundError: [Errno 2] No such file or directory: 'config.json'
The above exception was the direct cause of the following exception:
RuntimeError: App failed to start: config file missing
Bagian from e menetapkan atribut __cause__ pada exception baru, sehingga siapa pun yang membaca traceback dapat melihat dengan jelas apa yang memicunya. Ini sangat berguna dalam aplikasi besar di mana exception melintasi banyak lapisan kode.
Apa yang Baru di Python 3.10 - 3.13 untuk Penanganan Exception?
Beberapa pengembangan penting telah ditambahkan ke versi Python yang lebih baru seperti 3.10 dan 3.11 sejak artikel ini awalnya ditulis:
1. Structural pattern matching di Python 3.10
Python 3.10 memperkenalkan structural pattern matching, yang dapat digunakan untuk menangani exception dengan lebih elegan dengan mencocokkan tipe error dalam pernyataan match. Ini sangat berguna saat menangani banyak tipe exception dengan cara yang lebih mudah dibaca. Contoh:
try:
result = 1 / 0
except Exception as e:
match e:
case ZeroDivisionError():
print("You cannot divide by zero.")
case NameError():
print("Variable not defined.")
case _:
print("An unexpected error occurred.")
2. Lokasi error yang lebih rinci di traceback (Python 3.11)
Traceback di Python 3.11 kini menampilkan lokasi error yang presisi, sehingga lebih mudah men-debug exception.
Sebelum Python 3.11:
value = (1 + 2) * (3 / 0)
ZeroDivisionError: division by zero
Dengan Python 3.11, traceback menunjukkan sub-ekspresi tepat yang menyebabkan exception:
ZeroDivisionError: division by zero
(1 + 2) * (3 / 0)
^
3. Kelompok exception dan except* (Python 3.11)
Python 3.11 memperkenalkan kelompok exception untuk menangani beberapa exception dalam satu blok menggunakan except*. Ini berguna untuk mengelola kode asinkron atau skenario di mana beberapa exception mungkin muncul. Contoh:
try:
raise ExceptionGroup("Multiple errors", [ValueError("Bad value"), TypeError("Bad type")])
except* ValueError as ve:
print(f"Handling ValueError: {ve}")
except* TypeError as te:
print(f"Handling TypeError: {te}")
4. Metode add_note untuk exception (Python 3.11)
Exception kini memiliki metode add_note(), yang memungkinkan pengembang menambahkan catatan kustom pada exception untuk membantu debugging. Contoh:
try:
raise ValueError("Invalid input")
except ValueError as e:
e.add_note("This happened while processing user input.")
e.add_note("Consider validating input before processing.")
raise
ValueError: Invalid input
Notes:
- This happened while processing user input.
- Consider validating input before processing.
5. PEP 654: Penanganan exception bersarang yang lebih baik
Dengan kelompok exception, exception bersarang kini lebih mudah di-debug dan ditangani, khususnya pada alur kerja kompleks seperti multiprocessing atau tugas asinkron.
6. Pesan error yang disempurnakan (Python 3.12)
Python 3.12 melanjutkan upaya jangka panjang untuk membuat pesan error lebih spesifik dan dapat ditindaklanjuti. Misalnya, pesan NameError kini menyarankan variabel serupa yang berada dalam scope, dan error atribut pada tipe umum memberikan petunjuk yang lebih terarah:
# Python 3.12+
my_list = [1, 2, 3]
my_list.appendd(4)
AttributeError: 'list' object has no attribute 'appendd'. Did you mean: 'append'?
7. Traceback berwarna (Python 3.13)
Python 3.13 memperkenalkan traceback berwarna secara default di interpreter interaktif. Jenis error, nomor baris, dan pesan kini disorot dengan warna berbeda, sehingga jauh lebih cepat memindai dan memahami apa yang salah — terutama pada traceback panjang dengan banyak exception berantai.
Kesimpulan
Baik unit testing maupun penanganan exception adalah bagian inti dari pemrograman Python yang membuat kode Anda siap produksi dan tahan error. Dalam tutorial ini, kita telah mempelajari exception dan error di Python serta cara menanganinya. Selain itu, kita mempelajari blok try-except bersarang yang kompleks dan membuat blok exception kustom sesuai kebutuhan.
Alat dan mekanisme ini sangat penting, tetapi sebagian besar pekerjaan dilakukan melalui blok try dan except yang sederhana. Di mana try mencari exception yang dipicu oleh kode dan except menangani exception tersebut.
Jika ini terasa membingungkan dan Anda tidak tahu harus mulai dari mana, selesaikan kursus Introduction to Functions in Python kami untuk memahami scoping, fungsi lambda, dan penanganan error. Anda juga dapat mendaftar di jalur karier Python Programmer untuk memperoleh keterampilan pengembangan karier dan menjadi pengembang Python profesional.
Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.
FAQ
Apa perbedaan antara error dan exception di Python?
Error di Python umumnya merupakan masalah yang lebih serius yang mencegah program untuk melanjutkan, seperti syntax error, yang menunjukkan struktur kode tidak benar. Sementara itu, exception adalah kondisi yang mengganggu alur normal program tetapi dapat ditangani di dalam program menggunakan blok try-except, sehingga program dapat terus berjalan.
Dapatkah Anda menangkap beberapa exception dalam satu blok try-except?
Ya, Python memungkinkan Anda menangkap beberapa exception dalam satu blok try-except dengan menggunakan tuple tipe exception. Contohnya: except (TypeError, ValueError):. Ini akan menangani baik TypeError maupun ValueError dalam blok yang sama.
Bagaimana cara membuat exception kustom di Python?
Anda dapat membuat exception kustom dengan mendefinisikan class baru yang mewarisi dari class bawaan Exception. Contohnya:
class MyCustomError(Exception):
passApa tujuan blok else dalam struktur try-except?
Blok else dieksekusi jika blok try tidak memunculkan exception. Ini berguna untuk kode yang hanya harus dijalankan jika blok try berhasil, menjaga kode tetap bersih dan memisahkan penanganan error dari jalur eksekusi normal.
Mengapa blok finally penting dalam penanganan exception?
Blok finally selalu dieksekusi, terlepas dari apakah exception muncul atau tidak. Biasanya digunakan untuk tindakan pembersihan, seperti menutup berkas atau melepaskan resource, guna memastikan tindakan tersebut dilakukan dalam kondisi apa pun.
Bagaimana cara menekan exception di Python?
Anda dapat menekan exception dengan menggunakan manajer konteks contextlib.suppress. Ini memungkinkan Anda menentukan tipe exception yang harus diabaikan. Contohnya:
from contextlib import suppress
with suppress(FileNotFoundError):
open('non_existent_file.txt')Apa yang terjadi jika exception tidak ditangkap dalam program Python?
Jika sebuah exception tidak ditangkap, ia akan merambat ke atas call stack, dan jika tetap tidak tertangani, program akan dihentikan, mencetak traceback ke konsol yang menunjukkan di mana exception terjadi.
Bisakah Anda menaikkan kembali exception setelah menanganinya?
Ya, Anda dapat menaikkan kembali exception menggunakan pernyataan raise tanpa argumen dalam blok except. Ini berguna saat Anda ingin mencatat error atau melakukan tindakan lain sebelum membiarkan exception merambat lebih jauh.
Apakah ada cara menangani semua exception di Python?
Meskipun memungkinkan untuk menangkap semua exception menggunakan klausa except:, umumnya tidak direkomendasikan karena dapat menangkap exception yang tidak terduga dan menyulitkan debugging. Lebih baik menangkap exception spesifik atau menggunakan except Exception: untuk menghindari penangkapan exception yang menghentikan sistem seperti SystemExit dan KeyboardInterrupt.
Bagaimana membedakan antara syntax error dan runtime exception dari segi waktu kejadiannya?
Syntax error terdeteksi saat compile time, artinya interpreter Python menangkap error ini sebelum program mulai dijalankan. Runtime exception terjadi selama eksekusi program ketika interpreter menemui operasi yang tidak dapat dilakukan, seperti pembagian dengan nol atau mengakses variabel yang tidak ada.

