Go 関数のエラー処理のデバッグ スキルには次のものが含まれます。 1. fmt.Println() を使用してエラー情報を出力します。 2. error.Unwrap() を使用してネストされたエラーをアンラップします。 3. log.Printf() を使用してエラー情報を記録します。 4. カスタム エラー タイプを作成して詳細なエラー情報を提供します。 5. アサーションを使用して実行時にエラーを確認します。
Go 関数のエラー処理におけるデバッグのヒント
Go におけるエラー処理は非常に強力ですが、エラーのデバッグが非常に難しい場合があります。この記事では、関数のエラーを見つけて修正するのに役立ついくつかのテクニックを紹介します。
1. fmt.Println()
を使用する最も簡単な方法は、fmt.Println()
を使用することです。エラーメッセージを出力します。これは迅速なデバッグに役立ちますが、運用コードでは実行しないでください。
package main import ( "fmt" "os" ) func main() { f, err := os.Open("file.txt") if err != nil { fmt.Println(err) os.Exit(1) } // ... }
2. errors.Unwrap()
##errors.Unwrap() を使用すると、一連のエラーをアンラップできます。 。たとえば、関数が
os.ErrNotExist エラーをスローした場合、周囲の関数で
errors.Unwrap() を使用して、根本的なエラー (
nil#) を取得できます。 ##。 <pre class='brush:go;toolbar:false;'>package main
import (
"errors"
"fmt"
"os"
)
func main() {
f, err := os.Open("file.txt")
if err != nil {
if errors.Unwrap(err) == os.ErrNotExist {
fmt.Println("file does not exist")
} else {
fmt.Println(err)
}
os.Exit(1)
}
// ...
}</pre>
log.Printf()
を使用します。これは、より高度なログです。関数はエラー情報をファイルまたはコンソールに書き込むことができます。これは実稼働コードでのデバッグに役立ちます。 <pre class='brush:go;toolbar:false;'>package main
import (
"fmt"
"log"
"os"
)
func main() {
f, err := os.Open("file.txt")
if err != nil {
log.Printf("failed to open file: %v", err)
os.Exit(1)
}
// ...
}</pre>
カスタム エラー タイプを使用すると、エラーに関する詳細情報が得られます。たとえば、ファイルが存在しないことを示す
FileNotFoundError タイプを定義できます。 <pre class='brush:go;toolbar:false;'>package main
import (
"errors"
"fmt"
"os"
)
type FileNotFoundError struct {
path string
}
func (e FileNotFoundError) Error() string {
return fmt.Sprintf("file not found: %s", e.path)
}
func main() {
f, err := os.Open("file.txt")
if err != nil {
if errors.Is(err, FileNotFoundError{}) {
fmt.Println("file does not exist")
} else {
fmt.Println(err)
}
os.Exit(1)
}
// ...
}</pre>
アサーションは、実行時にエラーをチェックし、エラーが発生したときにパニックを引き起こすのに役立ちます。
package main import ( "fmt" "io/ioutil" "os" ) func main() { data, err := ioutil.ReadFile("file.txt") if err != nil { fmt.Println(err) os.Exit(1) } // 将错误包装成 panic if len(data) == 0 { panic("empty file") } // ... }
これらのヒントを使用すると、関数内のエラーをより簡単にデバッグできるようになり、コードの安定性と信頼性が向上します。
以上がgolang 関数のエラー処理のデバッグ スキルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。