stoneerror/README.md
Rene Nochebuena 7f3dcfa1cd
All checks were successful
Go CI/CD / go-ci (push) Successful in 10m5s
Release v1.0.0 (#2)
Reviewed-on: #2
Reviewed-by: Cloud Administrator <cloud-admin@noreply.gitstormr.dev>
Co-authored-by: Rene Nochebuena <code-raider@noreply.gitstormr.dev>
Co-committed-by: Rene Nochebuena <code-raider@noreply.gitstormr.dev>
2025-04-12 18:39:22 -06:00

3.2 KiB

πŸ”₯ 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!")