Golang ではエラーの種類の認識が非常に重要です。組み込みエラー タイプには、error、ValueError、TypeError、および IndexOutOfBoundsError が含まれます。カスタム エラー タイプは、エラー インターフェイスを実装することで定義できます。エラーの種類の識別は、errors.Is 関数または switch ステートメントを通じて行うことができます。エラーの種類を識別することで、さまざまな状況でエラーを適切に処理する堅牢な Golang プログラムを作成できます。
Golang でさまざまな種類のエラーを識別する
Golang では、さまざまな種類のエラーを識別することが重要です。この記事では、よくあるエラーの種類とその対処方法をいくつか紹介します。
組み込みエラー タイプ
カスタム エラー タイプ
組み込みのエラー タイプに加えて、独自のカスタム エラー タイプを定義することもできます。これを行うには、error
インターフェイスを実装する必要があります: error
接口:
type myError struct { msg string } func (e myError) Error() string { return e.msg }
识别错误类型
可以使用 errors.Is
函数来比较两个错误类型:
if errors.Is(err, os.ErrNotExist) { // 文件不存在 }
使用 switch 语句识别错误类型
为了处理不同类型的错误,可以使用 switch 语句:
switch err := f(); { case err == nil: // 操作成功 case errors.Is(err, os.ErrNotExist): // 文件不存在 case errors.Is(err, myError{}): // 自定义错误 default: // 其他类型的错误 }
实战案例
考虑一个从文件中读取数据的函数:
func readFile(filename string) (string, error) { data, err := ioutil.ReadFile(filename) if err != nil { if errors.Is(err, os.ErrNotExist) { return "", myError{"文件不存在"} } return "", err } return string(data), nil }
在这个例子中,readFile
函数使用 errors.Is
函数来检查潜在的 os.ErrNotExist
错误,并将其封装为自定义 myError
rrreee
エラーの種類を特定します
errors.Is
関数を使用して 2 つのエラーの種類を比較できます: rrreee
🎜使用 switch ステートメントはエラーのタイプを識別します🎜🎜🎜さまざまなタイプのエラーを処理するには、switch ステートメントを使用できます: 🎜rrreee🎜🎜実際的なケース🎜🎜🎜 ファイルからデータを読み取る関数を考えてみましょう: 🎜 rrreee🎜 この例では、readFile
関数は errors.Is
関数を使用して潜在的な os.ErrNotExist
エラーをチェックし、それらをカスタム エラーとしてカプセル化します。 myError
タイプ。 🎜🎜🎜結論🎜🎜🎜さまざまなタイプのエラーを識別して処理することで、堅牢で信頼性の高い Golang プログラムを作成できます。組み込みのエラー タイプ、カスタム エラー タイプ、およびエラー認識テクノロジーを使用すると、アプリケーションがさまざまな状況でエラーを適切に処理できるようになります。 🎜以上がGolang でさまざまなエラーの種類を識別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。