MGO を使用して Golang で「到達可能なサーバーがありません」パニックを防ぐ方法は?
MGO を使用した Golang のパニック回復: 「到達可能なサーバーがない」パニックの防止
Go で MGO ライブラリを使用して MongoDB インスタンスに接続する場合、インスタンスが利用できないかオフラインの場合、「到達可能なサーバーがありません」というパニックが発生する可能性があります。これにより、プログラムが予期せず終了する可能性があります。
この問題を防ぐために、Go の defer 関数と Recovery 関数を使用して回復メカニズムを実装できます。ただし、質問で提供されている解決策は効果的に機能していません。
修正コード:
以下は、パニックから正常に回復し、プログラムが実行を継続できるようにします:
package main import ( "fmt" "time" ) import ( "labix.org/v2/mgo" ) func connectToMongo() bool { fmt.Println("enter main - connecting to mongo") defer func() { if r := recover(); r != nil { fmt.Println("Unable to connect to MongoDB. Received panic:", r) } }() maxWait := time.Duration(5 * time.Second) session, err := mgo.DialWithTimeout("localhost:27017", maxWait) if err != nil { return false } session.SetMode(mgo.Monotonic, true) coll := session.DB("MyDB").C("MyCollection") if coll != nil { fmt.Println("Got a collection object") return true } fmt.Println("Unable to retrieve collection") return false } func main() { if connectToMongo() { fmt.Println("Connected") } else { fmt.Println("Not Connected") } }
このコードでは、defer 関数を使用して、 DialWithTimeout 呼び出し。パニックが発生した場合は、エラー メッセージを出力してプログラムの実行を続行し、プログラムが途中で終了するのを防ぎます。
MongoDB が停止している場合の出力:
MongoDB が停止している場合、プログラムは次の出力を生成します:
enter main - connecting to mongo Unable to connect to MongoDB. Received panic: no reachable servers Not Connected
MongoDB の出力Up:
MongoDB が起動すると、プログラムは次の出力を生成します:
enter main - connecting to mongo Got a collection object Connected
パニックを捕捉し、有益なエラー メッセージを提供することで、プログラムの継続を保証できます。実行でき、一時的なネットワークの問題や MongoDB の停止を適切に処理できます。
以上がMGO を使用して Golang で「到達可能なサーバーがありません」パニックを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Beegoormフレームワークでは、モデルに関連付けられているデータベースを指定する方法は?多くのBEEGOプロジェクトでは、複数のデータベースを同時に操作する必要があります。 Beegoを使用する場合...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...
