Lewati ke konten utama

Penanganan Exception & Error di Python

Error dan exception dapat menyebabkan kegagalan program atau perilaku tak terduga, dan Python memiliki seperangkat alat yang tangguh untuk meningkatkan stabilitas kode.
Diperbarui 28 Sep 2026  · 11 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

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. 

proses try except else finally di Python

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:

  1. AssertionError: muncul ketika pernyataan assert gagal.

  2. EOFError: muncul ketika fungsi input() menemui kondisi end-of-file.

  3. AttributeError: muncul ketika penetapan atau referensi atribut gagal.

  4. TabError: muncul ketika indentasi berisi tab atau spasi yang tidak konsisten. 

  5. ImportError: muncul ketika impor modul gagal. 

  6. IndexError: terjadi ketika indeks dari suatu urutan berada di luar jangkauan

  7. KeyboardInterrupt: muncul ketika pengguna menekan tombol interupsi (Ctrl + C atau Delete).

  8. RuntimeError: terjadi ketika error tidak masuk ke kategori mana pun. 

  9. NameError: muncul ketika variabel tidak ditemukan dalam scope lokal maupun global. 

  10. MemoryError: muncul ketika program kehabisan memori. 

  11. ValueError: terjadi ketika operasi atau fungsi menerima argumen dengan tipe yang benar tetapi nilai yang salah. 

  12. ZeroDivisionError: muncul ketika Anda membagi suatu nilai atau variabel dengan nol. 

  13. SyntaxError: muncul dari parser ketika sintaks Python salah. 

  14. IndentationError: terjadi ketika ada indentasi yang salah.

  15. 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.  

  1. Jalankan kode di bawah pernyataan try.

  2. Ketika sebuah exception muncul, jalankan kode di bawah pernyataan except. 

Alih-alih berhenti pada error atau exception, kode kita akan beralih ke solusi alternatif. 

pernyataan try except di Python

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 x belum 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 ZeroDivisionError muncul, 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. 

try dengan klausa else di Python

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 IndexError muncul, 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.

kata kunci finally di Python

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 FileNotFoundError untuk fungsi open().
  • 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"

pengeditan berkas di Workspace

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)

tangkapan layar pengeditan berkas di Workspace

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. 


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

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):
    pass

Apa 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.

Topik
Python

Pelajari lebih lanjut tentang Python dengan kursus-kursus ini!

Kursus

Pengantar Python

4 jam
7M
Kuasai dasar-dasar analisis data dengan Python dalam 4 jam. Kursus online ini memperkenalkan antarmuka Python dan pustaka populer.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya