今回は、NodeJs がデータベース例外を処理する方法について詳しく説明します。NodeJs がデータベース例外を処理する際の 注意事項 について、実際のケースを見てみましょう。
NodeJs バージョン: 4.4.4
データベースリンクエラー
最も厄介なことは、nodejs を使用して例外を処理することです。ここでは、nodejs によって提供される domain
と、サードパーティのライブラリによって特別に処理されるいくつかのことについては置いておきます。データベースの操作は私たちにとってよく使われる機能です。コールバックを使用すると、ここで多くのエラーが発生します。
以下の通り:
rreee両方のコールバックでエラーが発生する可能性があることがわかります。
これはモジュールであり、エクスポートしました。
ここでは、データベースリンクのポート番号を意図的に間違って入力し、330666:
var pool = require('../db.js'); var runtimeLog = require('../log.js').getLogger('runlog'); var Promise = require('bluebird'); function queryPromise(queryString) { return new Promise(function(resolve, reject) { pool.getConnection(function(err, connection) { //connection.query(queryString, function(err, rows, fields) { // if (!err) { // resolve(rows); // } else { // runtimeLog.error(err) // reject(err) // } // connection.release(); //}); }) }) } module.exports = function() { return new Promise(function(resolve, reject) { queryPromise("select * from wb123_home_map GROUP BY onestair") .then(function(results){ resolve(results); }) .catch(function(err){ runtimeLog.error(err) }) }) }
と書きました。 この場合、データベースに接続するとエラーが発生します。
ここでは、promise を使用しているため、エクスポートされた 関数 で、queryPromise 関数内のエラーをキャッチしてログに出力する catch を使用します。
りーデータベースSQLステートメントエラー
コードを変更して、データベース リンクを正しく入力し、SQL ステートメントを間違ったステートメントに変更してみましょう。
りーエラーメッセージ:
module.exports = { host: '192.168.6.101', database: 'web123', user: 'root', password: 'passw0rd', protocol: 'mysql', port: '330666', query: {pool: true} }
エラーはすべて catch を通じてスローされることがわかります。
したがって、Promise を使用すると、以下でスローされた例外を catch で直接キャッチできます。 queryPromise 関数で例外をログに記録する必要はありません。
この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がデータベース例外を処理する NodeJ の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。