Exception Handling & Error Code

Fachrur Rozi
Sulang
Published in
2 min readMay 2, 2018

Pada kesempatan kali ini saya akan membahas mengenai error code dan exception handling yang diterapkan pada aplikasi Suling. Penanganan error code dan exeption direpresentasikan dari sisi backend dengan penyediaan HTTP status code.

HTTP status code adalah sebuah cara untuk menunjukkan apakah permintaan HTTP tertentu telah berhasil diselesaikan dalam bentuk objek Response. Response dikelompokkan dalam lima kelas: tanggapan informasi, tanggapan yang sukses, pengalihan, kesalahan klien, dan server kesalahan. Masing-masing kelompok direpresentasikan dengan error code 1xx, 2xx, 3xx, 4xx, dan 5xx.

Tabel di atas merupakan beberapa contoh dari HTTP status code yang umum dan sering digunakan dalam mengembangkan sebuah REST API. Selain itu saya menemukan kondisi baru yang harus menggunakan status code yang tidak lazim, yaitu 409 conflict.
Status code 409 ini terjadi ketika terdapat percobaan untuk melakukan duplikasi entity dalam system (database). Hal ini saya terapkan ketika membuat sign up untuk user baru ke aplikasi suling. Informasi username dan email yang diberikan oleh user ketika sign up harus divalidasi terlebih dahulu, dan saya memberikan status code 409 ketika username atau email yang diberikan oleh user telah terdaftar di sistem suling.

Berikut contoh penggunaannya di dalam Django Rest Framework:

from rest_framework import status
. . . .
def post(self, request, format=None):
try: __USERNAME__ = request.data['username'] __EMAIL__ = request.data['email'] . . . .
user = User.objects.filter(Q(username=__USERNAME__) |
Q(email=__EMAIL__))
if len(user) > 0: message = { "messages": "user with that username or email already exist" } return Response(message, status=status.HTTP_409_CONFLICT) except Exception as e: message = { "messages": "bad request" } return Response(message, status=status.HTTP_400_BAD_REQUEST)

Selain yang telah disebutkan, ternyata masih ada beberapa status code yang belum didefinisikan, dan definisinya dibebaskan kepada developer sesuai dengan kebutuhannya. Contoh status code yang belum didefinisikan adalah status code dengan nomor 432 sampai 450. status code 432 ini digunakan oleh tim kami sebagai wrong password error, rekan saya telah menerapkannya beberapa waktu yang lalu.

References: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

--

--