Perilaku Default Error
TL;DR: Mekanisme penanganan error ini menangkap semua error yang terjadi selama runtime server. Ini termasuk route handler errors, middleware failures, route not found scenarios, static file errors, dan uncaught exceptions lainnya selama pemrosesan request. Jika Anda tidak mendefinisikan custom error handler dengan router.catch(), Deserve secara otomatis menggunakan perilaku default ini untuk memastikan server Anda tidak pernah crash dari unhandled errors.
Perilaku Default Dasar
Jika Anda tidak memanggil router.catch(), Deserve secara otomatis menangani semua error dengan empty responses default dan status code yang sesuai:
import { Router } from '@neabyte/deserve'
const router = new Router({ routesDir: './routes' })
// Tidak ada router.catch() yang didefinisikan - menggunakan perilaku default
await router.serve(8000)Response Error Default
Response error default menyediakan:
- Empty Body: Tidak ada konten response body
- Status Code: Mempertahankan status code error original (404, 500, dll.)
- Headers: Menyertakan headers yang diatur via
ctx.setHeader()sebelum error
// Struktur response default
// Status: 404 (atau status code error lainnya)
// Body: null (kosong)
// Headers: Header apa pun yang diatur di context sebelum errorSkenario Error
Penanganan error default mencakup semua tipe error yang dapat terjadi selama pemrosesan request:
404 - Route Tidak Ditemukan
Ketika route tidak ada atau tidak ada route handler yang cocok ditemukan:
// GET /nonexistent
// Status: 404
// Body: null
// Headers: {}Ini termasuk:
- Routes yang tidak ada
- Routes dengan HTTP methods yang salah
- Routes yang gagal match selama routing resolution
500 - Server Errors
Ketika route handler melempar error atau exception:
export function GET(ctx: Context): Response {
throw new Error('Something went wrong')
// Response default: Status 500, empty body
}Ini mencakup:
- Uncaught exceptions di route handlers
- Runtime errors (TypeError, ReferenceError, dll.)
- Async operation failures
- Error apa pun yang dilempar selama eksekusi handler
Middleware Errors
Ketika fungsi middleware melempar error atau gagal:
router.use(async (ctx, next) => {
throw new Error('Middleware failed')
// Response default: Status 500, empty body
})Semua middleware errors ditangkap dan ditangani oleh default error handler.
Static File Errors
Ketika menyajikan file statis menemui masalah:
router.static('/static', { path: './public' })
// GET /static/missing.jpg
// Status: 404 (file tidak ditemukan)
// Body: null
// Headers: {}Ini termasuk:
- File not found errors (404)
- File read permission errors (500)
- Filesystem operation failures (500)
- Invalid path resolution errors (500)
Request Processing Errors
Error tak terduga selama penanganan request:
// Errors di:
// - URL parsing
// - Context creation
// - Route matching
// - Response generation
// Semua default ke: Status 500, empty bodyJaminan Penanganan Error
Default error handler memastikan:
- Tidak ada crash server: Semua error ditangkap dan dikonversi ke HTTP responses
- Perilaku konsisten: Format response error yang sama di semua tipe error
- Preservasi header: Header yang diatur sebelum error dipertahankan di response
- Akurasi status code: Status code error original (404, 500, dll.) dipertahankan