go17/book/exception/README.md
2024-11-23 16:08:17 +08:00

38 lines
861 B
Markdown

# 业务异常
```go
func TestGetBook(t *testing.T) {
book := controller.NewBookController()
ins, err := book.GetBook(context.Background(), &controller.GetBookRequest{
Isbn: 100,
})
if errors.Is(err, gorm.ErrRecordNotFound) {
t.Log("is not found error")
}
if err.Error() == "record not found" {
t.Log(" string equal is not found error")
}
if err != nil {
t.Fatal(err)
}
t.Log(ins)
}
```
设立一种统一的业务异常机制, 业内最常见的 就是 定义业务异常Code
+ Code: 业务异常码
+ Message: 异常的具体信息
+ Reason: 导致这个异常的原因
业务异常是错误的一部分, 是一个error的一种实现
```go
// The error built-in interface type is the conventional interface for
// representing an error condition, with the nil value representing no error.
type error interface {
Error() string
}
```