このような非常に基本的な移行コードがあります。テーブルを削除し、テーブルを作成して、いくつかのデータをシードします。
this.knex.schema.dropTable(this.tableName)
.catch((err) => console.log(err))
.then(() => {
this.knex.schema.createTable(this.tableName, function(table) {
table.increments("id").primary();
table.string("name");
table.integer("parent_id").unsigned().default(0);
})
.catch((err) => console.log(err))
.then(() => {
this.categories.forEach((category) => {
Category.create(category)
.catch((err) => console.log(err))
.then((category) => console.log(category.get("name") + " seeded."))
});
});
});
お気づきかもしれませんが.catch((err) => console.log(err))
、コードには 3x チェーンがあります。
現在、アプリケーションに Bugsnag を統合しており、すべてのバグを修正できるように Bugsnag のすべての例外/エラーを適切にログに記録したいと考えています。ただし、今できることは、コンソールにログインすることだけです。さらに悪いことに、私は自分自身を繰り返し、各catch
ブロックでロジックを複製します。
私はこのようなことを考えています:
.catch((err) => ErrorHandler.add(err))
class ErrorHandler {
add(err) {
// Notify Bugsnag
// Log it to console
}
}
それは別の問題を引き起こします。メソッドの追加を忘れたらどうなりますかcatch
...それでも機能しません。
このようなことも考えました:
// Change exception behaviour so whenever they are called, they raise an `onException` event
app.listen("onException", (err) => {
// Notify Bugsnag
// Log error to console
});
このようにして、すべてのエラーをキャッチしてコードを DRY できますが、Node が例外のフックをサポートしているかどうかはわかりません。
私の場合、あなたは何をし、どのようなアプローチをとるべきですか? すべてのエラーが正しく Bugsnag に送信されるようにしたいと考えています。