Go Web クローラーでの「無効なメモリー アドレスまたは Nil ポインター逆参照」エラーのトラブルシューティング方法
Dec 04, 2024 pm 06:25 PM無効なメモリ アドレスまたは Nil ポインター逆参照エラー: Go の Web クローラーのトラブルシューティング
「実行時エラー: 無効なメモリ アドレスまたはGo で nil pointer dereference」エラーが発生した場合は、問題がどこにあるのかを判断することが重要です。 Web クローラーの初心者が直面する一般的なシナリオを詳しく見てみましょう。
提供されているコードは、Web クローリング用に 2 つの関数、advancedFetcher と BasicFetcher を使用しています。どちらの関数も、makeGetRequest ユーティリティを使用して HTTP リクエストを作成します。ただし、特定の状況下では前述のエラーが発生する可能性があります。
問題の理解
専門家は、コード全体のエラーを入念にチェックすることを推奨しています。この方法を実行しても、同じエラーが発生する可能性があります。何が起こっているのかを詳しく調べてみましょう。
basicFetcher 関数では、リクエストが行われた後に ioutil.ReadAll(resp.Body) が呼び出されます。リクエストが失敗した場合 (つまり、err != nil)、本文は引き続き読み取られますが、この状況では resp.Body が nil である可能性があるため、問題のエラーが発生する可能性があります。
問題の解決
この問題に対処するには、(結果、エラー) タプルを返すように BasicFetcher 関数を変更することを検討してください。これにより、エラーが発生した場合に正常に終了できます。リビジョンの例を次に示します:
func basicFetcher(uri string, c chan int) (int, error) { fmt.Println("Getting: ", uri) resp, err := http.Get(uri) if err != nil { return 0, err } defer resp.Body.Close() _, err = ioutil.ReadAll(resp.Body) if err != nil { return 0, err } return resp.StatusCode, nil }
追加のヒント
- エラーの確認: 特に各ステップでのエラーを徹底的に確認します。応答をフェッチおよび読み取るとき。
- 慣用句を使用するGo: エラー タプルを返して潜在的なエラーを適切に処理するなど、慣用的な Go プラクティスを採用します。
- 予想されるエラーの処理: Web クローリング中に発生する可能性のある特定のエラーを予測して処理します。 HTTP エラーまたは接続タイムアウトとして。
以上がGo Web クローラーでの「無効なメモリー アドレスまたは Nil ポインター逆参照」エラーのトラブルシューティング方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOの実際のパフォーマンスを正確に反映するベンチマークを作成するにはどうすればよいですか?
