他の人が使用するpub/sub Mediatorライブラリを開発していますが、エラーの処理方法がわかりません。
コードの例を次に示します。
/**
*
* @param String channel Channel to subscribe
* @param String|function callback Function name or callback
* @param String context Context to bind function to
* @param Boolean once True to subscribe once
**/
this.subscribe = function (channel, callback, context, once) {
if (!_.isObject(context)) {
context = window;
}
if (!_.isFunction(subscription) && !_.isFunction(context[subscription])) {
throw new Error('Function passed as callback to channel subscription named ' + channel + ' seems invalid!');
}
// Everything ok, add to channels object
channels[channel].push({fn: subscription, context: context || this, once: once});
}
このメソッドはライブラリの一部です。APIは、チャネル名と有効なコールバック(関数名、ラムダ、またはコールバックのいずれか)を想定しています。
チャネル引数が文字列でない場合、ライブラリはすぐに停止します。無効なコンテキストが渡された場合、ウィンドウが想定されます。これら両方のパラメータの間違いは簡単にデバッグできます。
ただし、無効なコールバックが渡されると、イベントが発生する(チャネル公開が行われる)までエラーが伝播されます。pub / subシステムでは、たとえば、イベントがめったに発生しない場合、これはデバッグの悪夢になる可能性があります。
だから私の質問は...
この特定のシナリオでは、私が他の人にjavascriptライブラリを開発していることを考慮に入れて、次のことを行う必要があります。
- それ以上のエラー伝播を防ぐためにエラーをスローしますか?
- false / undefined / -1を返し、サブスクリプションを登録しませんか?
- デバッグをサードパーティの開発者に任せて、どこかで死ぬように通常どおり続行します
注:同様の質問がありますが、私の状況は少し異なり、提供された回答は私の精神を安心させませんでした。