Rene Nochebuena 24ea252c96
All checks were successful
Go CI/CD / go-ci (pull_request) Successful in 10m37s
Go CI/CD / go-ci (push) Successful in 10m38s
Add unit tests for stoneerror package
Introduce comprehensive tests for core functionalities including error creation, metadata handling, wrapping, JSON conversion, and type validation. These tests ensure robustness and reliability of the stoneerror package.
2025-04-12 17:42:47 -06:00
2025-04-10 19:31:27 -06:00

πŸ”₯ StoneError - 10 Billion Times Error Handling!

The most scientifically precise error library from the Kingdom of Science!

Kingdom of Science Approved SO BADASS 10 BILLION

πŸš€ Why StoneError?

  • Dr.Stone-themed error handling that would make Senku proud
  • Dramatic error traces worthy of a laboratory explosion
  • Scientific metadata attached to every error case
  • 10 billion percent more organized than standard errors

πŸ’₯ Installation

go get gitstormr.dev/stone-utils/stoneerror@latest

⚑ Basic Usage

package main

import (
	"errors"
	"fmt"
	"gitstormr.dev/stone-utils/stoneerror"
)

func main() {
	// Create new scientific error
	err := stoneerror.New(4001, "Invalid chemical formula").
	    WithMetadata("element", "H2O2").
	    WithMetadata("expected", "H2O")

	// Wrap existing errors with scientific precision
	dbErr := errors.New("connection timeout")
	wrappedErr := stoneerror.Wrap(dbErr, 5001, "Database experiment failed").
	    WithMetadata("query", "SELECT * FROM chemical_elements")
}

πŸ”¬ Error Output Format

StoneError [4001]
β”œβ”€ Message: Invalid chemical formula
β”œβ”€ Time: 2023-07-15T14:30:45Z
β”œβ”€ Metadata:
β”‚  β”œβ”€ element: H2O2
β”‚  β”œβ”€ expected: H2O
└─ Caused by:
    StoneError [5001]
    β”œβ”€ Message: Database experiment failed
    β”œβ”€ Time: 2023-07-15T14:30:45Z
    β”œβ”€ Metadata:
    β”‚  β”œβ”€ query: SELECT * FROM chemical_elements
    └─ Caused by:
        connection timeout

πŸ§ͺ Core Features

Scientific Error Codes

const (
	LAB_FAILURE    = 5000 // Critical experiment failure
	BAD_CHEMISTRY  = 4001 // Invalid formula or mixture
	EQUIPMENT_FAIL = 5002 // Tools malfunction
)

Advanced Error Wrapping

// Wrap any error with scientific context
result := performExperiment()
if err != nil {
	return stoneerror.Wrap(err, LAB_FAILURE, "Voltaic pile test failed")
		.WithMetadata("voltage", "3.7V")
		.WithMetadata("materials", []string{"zinc", "copper"})
}

JSON Output

jsonError := err.ToJSON()
// {
//   "code": 4001,
//   "message": "Invalid chemical formula",
//   "time": "2023-07-15T14:30:45Z",
//   "metadata": {
//     "element": "H2O2",
//     "expected": "H2O"
//   }
// }
stonelog.InitStoneLab(stonelog.STONE_DEBUG, true, false) // true = JSON, false = Keep suffixes
// Output: {"time":"2023-07-15T12:00:00Z","level":"OBSERVATION","message":"βœ… Experiment successful: System ready","caller":"main.go:15"}

βš—οΈ Scientific Best Practices

  1. Always use specific error codes - Each experiment needs proper labeling!
  2. Attach relevant metadata - A good scientist documents everything
  3. Wrap underlying errors - Trace the full chain of causality
  4. Combine related failures - Multiple data points lead to better conclusions

Join the Scientific Revolution!

"With StoneError, we're 10 billion percent prepared for any failure!" - Senku Ishigami

Kingdom of Science Approved

(Now with 100% more Chrome screaming "SO BADASS!")

Description
Ultimate Go error toolkit! πŸ’Ž Standardized errors with custom codes, rich metadata & JSON superpowers. Perfect for APIs & microservices. Part of stone-utils ecosystem. Error handling, evolved! πŸš€
Readme MIT 40 KiB
v1.0.0 Latest
2025-04-12 18:40:40 -06:00
Languages
Go 100%