https://github.com/gogaruda/apperror
Utilitas standar untuk menangani error
https://github.com/gogaruda/apperror
error-handling error-log error-messages error-monitoring error-reporting go golang golang-library golang-module golang-package
Last synced: 10 months ago
JSON representation
Utilitas standar untuk menangani error
- Host: GitHub
- URL: https://github.com/gogaruda/apperror
- Owner: gogaruda
- Created: 2025-06-24T12:05:16.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-06-24T12:24:48.000Z (10 months ago)
- Last Synced: 2025-06-25T10:54:37.941Z (10 months ago)
- Topics: error-handling, error-log, error-messages, error-monitoring, error-reporting, go, golang, golang-library, golang-module, golang-package
- Language: Go
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# apperror
Modul `apperror` adalah utilitas standar untuk menangani error di aplikasi backend berbasis Go, khususnya dalam arsitektur web (REST API) menggunakan Gin. Modul ini menyediakan standar penanganan error internal, pelaporan ke client, dan logging.
---
## ๐ง Fitur
- Standardisasi kode error (terstruktur)
- Support log internal dan pesan aman untuk client
- Debug mode untuk development
- Integrasi mudah dengan Gin
- Dukungan error wrapping & unwrapping (`errors.As`, `apperror.Is`)
---
## ๐ฆ Instalasi
```bash
go get github.com/gogaruda/apperror
````
---
## ๐ Cara Penggunaan
### 1. Buat error di repository layer
```go
return apperror.New(
apperror.CodeDBError,
fmt.Sprintf("gagal query role_id %v", roleID),
err,
)
```
### 2. Tangani di handler controller
```go
data, err := s.GetByID(id)
if err != nil {
apperror.HandleHTTPError(c, err)
return
}
```
### 3. (Opsional) Cek tipe error dengan `Is`
```go
if apperror.Is(err, apperror.CodeUserNotFound) {
// bisa return 404, atau log khusus
}
```
---
## ๐ Debug Mode
Untuk menampilkan pesan internal (`debug`) di response JSON saat development, aktifkan env var:
```bash
APP_DEBUG=true
```
---
## ๐ Best Practice
* Jangan tampilkan `err.Error()` langsung ke user.
* Gunakan `apperror.New` untuk membungkus semua error.
* Gunakan `apperror.Is` saat ingin handle khusus berdasarkan kode error.
---
## ๐ค Contoh Response (Production)
```json
{
"code": 404,
"status": "error",
"message": "User tidak ditemukan"
}
```
## ๐งช Contoh Response (Debug Mode)
```json
{
"code": 500,
"status": "error",
"message": "Kesalahan database",
"debug": "gagal query role_id 123"
}
```