Go での例外処理プロセスのカスタマイズには、次の手順が含まれます。 追加のエラー情報を含めるために、エラー インターフェイスを実装するカスタム タイプを定義します。追加情報にアクセスするには、errors.As 関数を使用してエラーをカスタム タイプに変換します。エラー コードやエラー メッセージの抽出など、必要に応じてカスタム タイプの情報を処理します。柔軟で有益なエラー処理メカニズムを作成して、特定のアクションを実行します。
Go で例外処理プロセスをカスタマイズする
Go での例外処理は、組み込みの error## によって行われます。 # エラー メッセージを返す
Error() メソッドを定義するインターフェイス実装。これはエラーを処理する簡単な方法を提供しますが、場合によってはエラー処理プロセスをより詳細に制御する必要があります。
カスタム タイプ
最初のステップは、error インターフェイスを実装するカスタム タイプを定義することです。これにより、エラー コードやその他のコンテキスト データなどの追加情報をエラーに関連付けることができます。
import "fmt" // CustomError 自定义的错误类型 type CustomError struct { code int error error } func (e *CustomError) Error() string { return fmt.Sprintf("Code: %d, Error: %s", e.code, e.error) }
エラー処理
次に、 を使用できます。 errors.As この関数は、追加情報を抽出するためにエラーをカスタム タイプに変換します。
// 处理错误 func HandleError(err error) { var customError *CustomError if errors.As(err, &customError) { fmt.Println("错误代码:", customError.code) fmt.Println("错误信息:", customError.error) } else { // 不是自定义错误,进行默认处理 fmt.Println("无法处理此错误。", err) } }
実用的なケース
呼び出す必要がある関数を考えてみましょう。外部 API。この関数は、リクエストが成功したかどうかを示すエラー、エラー コード、およびエラー メッセージを返す場合があります。func CallAPI() (*Response, error) { // ... return nil, &CustomError{ code: 400, error: errors.New("请求无效。"), } }
HandleError 関数を呼び出して、次からのリクエストを処理できます。
CallAPI エラー、カスタム エラー情報の抽出および出力:
func main() { res, err := CallAPI() if err != nil { HandleError(err) } else { fmt.Println("API 调用成功。", res) } }
以上がGolang で例外処理プロセスをカスタマイズするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。