Cara Handle Panic pada HTTP Server di Golang

VANDY AHMAD MISRY AR RAZY
2 min readNov 10, 2022

Jika kita menggunakan Golang sebagai server, kemungkinan besar kita pernah kena panic, panic dapat menyebabkan server kita mati jika tidak handle. Pada HTTP Server bawaan golang sendiri sudah terdapat recovery, akan tetapi client (Frontend ) tidak mendapat response apapun. Sehingga lebih baik kita membuat fungsi recover panic sendiri yang dapat memberikan response error ketika ada panic. recover panic ini biasanya kita deklarasikan di middleware. Middleware sendiri merupakan sebuah function yang berperan sebagai “Penengah” antara request yang masuk sebelum dikirim ke controller

Agar dapat merecover panic kita dapat menggunakan fungsi bawaan golang yaitu recover() , fungsi dipanggil dalam defered function sehingga jika terdapat panic maka akan return variabel panic yang terjadi, jika tidak maka akan return nil berikut contohnya

pada line ke 5 kita bisa menambahkan beberapa baris code untuk memonitor ketika ada panic, seperti menulis log, mengirimkan notif di email atau wa engineer ataupun sesuatu yang lain, tapi pada kesempatan kali ini kita cukup menambahkan println saja

Kita bisa menggunakan source code pada materi sebelumnya Implementasi Context Pada Golang untuk simulasi client dan servernya

pertama kita akan membuat middleware terlebih dahulu, middlewarenya akan saya beri nama handlePanic, code nya seperti berikut

pada fungsi diatas di line 6 dan 7 kita mengembalikan responsenya yaitu error: internal server error, dan kita print panicnya di terminal, pada line tersebut kita dapat menambahkan logic lain seperti yang saya sebutkan diatas bisa kirim notifikasi ke programmmer atau apa pun.

selanjut kita buat handler sederhana, fungsi PanicHandler kita simulasikan bahwa terdapat panic, selanjutnya kita tinggal implementasi middleware dan handlernya pada route

nah pada line 3 menggunakan route /panic, maka sebelum masuk ke PanicHandler request akan masuk terlebih dahulu pada middleware handlePanic, kemudian karna sudah didefinisikan defer dan recover pada middleware sehingga jika terdapat panic pada handler akan menampilkan panic nya dan memberi response error:Internal server error, sesuai yang kita definisikan di middleware

Sekian, Artikel terimakasih sudah membaca sampai sejauh ini, apabila terdapat ketidak sesuain anda bisa menghubungi saya melalui linkedin maupun whatapp, saya sangat senang apabila anda memberikan kritik maupun saran

Baca juga

Saya juga sedang mencari pekerjaan remote parttime maupun freelance jika perusahaan anda membutuhkan jasa saya bisa hubungi saya melalui wa 085156645724
Terimakasih

--

--