feat(quando-36t): implement error types and handling
- Create errors.go with sentinel errors - Define ErrInvalidFormat for parsing errors - Define ErrInvalidTimezone for timezone errors - Define ErrOverflow for date arithmetic overflow - Comprehensive godoc for each error with usage context - Document no-panic policy in error handling - Document Must* variant panic behavior - Example tests showing error handling patterns - Tests for error uniqueness and errors.Is compatibility - 100% coverage for error definitions Error Handling Policy: - Library never panics in normal operations - All errors returned as values - Use errors.Is() for error type checking - Must* functions panic (for test/init use only) All acceptance criteria met: ✓ errors.go file created ✓ ErrInvalidFormat defined ✓ ErrInvalidTimezone defined ✓ ErrOverflow defined ✓ Godoc for each error with usage context ✓ Documentation of no-panic policy ✓ Documentation of Must* panic behavior ✓ Example tests showing error handling patterns
This commit is contained in:
parent
e5ece8d480
commit
2bf1df03ea
4 changed files with 189 additions and 2 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package quando_test
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
|
|
@ -277,3 +278,37 @@ func ExampleDuration_negative() {
|
|||
// Months: -12
|
||||
// Years: -1
|
||||
}
|
||||
|
||||
// ExampleErrInvalidFormat demonstrates handling invalid date formats
|
||||
func Example_errorHandling() {
|
||||
// Note: Parse doesn't exist yet, so this is a conceptual example
|
||||
// showing the error handling pattern that will be used
|
||||
|
||||
// Simulate an error by directly using the sentinel error
|
||||
err := quando.ErrInvalidFormat
|
||||
|
||||
// Check for specific error type
|
||||
if errors.Is(err, quando.ErrInvalidFormat) {
|
||||
fmt.Println("Invalid format detected")
|
||||
}
|
||||
|
||||
// Output: Invalid format detected
|
||||
}
|
||||
|
||||
// Example_errorTypes demonstrates all error types
|
||||
func Example_errorTypes() {
|
||||
// Show all defined error types
|
||||
errors := []error{
|
||||
quando.ErrInvalidFormat,
|
||||
quando.ErrInvalidTimezone,
|
||||
quando.ErrOverflow,
|
||||
}
|
||||
|
||||
for _, err := range errors {
|
||||
fmt.Println(err.Error())
|
||||
}
|
||||
// Output:
|
||||
// invalid date format
|
||||
// invalid timezone
|
||||
// date overflow
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue