Error Handling
Penjelasan
Secara default, error seperti 404 (halaman tidak ditemukan) atau 500 (server error) ditampilkan Flask dengan halaman bawaan yang polos. Kamu bisa menggantinya dengan halaman kustom lewat decorator @app.errorhandler(kode_status), yang menerima parameter error dan harus mengembalikan response beserta kode status HTTP-nya. Untuk menghentikan request secara sengaja dari dalam kode — misalnya user mencoba akses resource yang bukan miliknya — pakai abort(kode_status), yang otomatis memicu errorhandler terkait.
Contoh Konsep
from flask import Flask, render_template, abort
app = Flask(__name__)
@app.errorhandler(404)
def halaman_tidak_ditemukan(error):
return render_template('404.html'), 404
@app.errorhandler(500)
def server_error(error):
return render_template('500.html'), 500
@app.route('/produk/<int:id>')
def detail_produk(id):
produk = cari_produk(id)
if produk is None:
abort(404)
return f'Produk: {produk}'
Praktikum
Lengkapi route agar memanggil abort(403) kalau user bukan pemilik data, dan buat errorhandler untuk 403.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan pernah menampilkan traceback error mentah ke user di production — pastikan debug=False dan andalkan errorhandler kustom untuk pengalaman yang lebih ramah.