Middle
27
Как сделать так, чтобы потребитель библиотеки был обязан обрабатывать кастомное исключение?
Сұралған компаниялар
Позитив Технолоджис
AI-дан жауап
sobes.tech AI
Чтобы заставить потребителя библиотеки обрабатывать кастомное исключение, можно использовать несколько подходов:
-
Объявить исключение в сигнатуре функции (если язык поддерживает checked exceptions, например, Java). В Go исключения не используются, но можно возвращать ошибки определённого типа.
-
В Go: определить собственный тип ошибки, реализующий интерфейс
error, и документировать, что функция может вернуть именно этот тип ошибки. Потребитель обязан проверить тип ошибки, чтобы корректно её обработать.
Пример на Go:
package mylib
import "fmt"
type MyCustomError struct {
Msg string
}
func (e *MyCustomError) Error() string {
return e.Msg
}
func DoSomething() error {
// ... какая-то логика
return &MyCustomError{Msg: "что-то пошло не так"}
}
Потребитель:
err := mylib.DoSomething()
if err != nil {
if customErr, ok := err.(*mylib.MyCustomError); ok {
// Обработка кастомной ошибки
fmt.Println("Обработали кастомную ошибку:", customErr)
} else {
// Общая обработка ошибок
}
}
Таким образом, потребитель обязан явно проверить и обработать кастомное исключение.