0

WCF サービスでの例外処理に関連する問題に直面しています。誰でも私を助けてください。

私の問題: -

モバイルアプリケーション用に開発しているWCFサービスがあります。私のWCFサービスには、クラスAがあるクラスライブラリプロジェクトがあります。そのクラスでは、webconfigファイルのappsettingブロックから値を取得するメソッドを定義しました(ex UserID用)。

webconfigでその設定を定義するのを忘れた場合、そのメソッドのtry catchブロックで例外が発生します(このステップではすべて問題ありません)しかし、理想的には、その例外は、呼び出し元のそれぞれのWCFサービスメソッドのcatchブロックにも入る必要がありますそのクラスAメソッド。

私の場合、これはハプニングではありません。参考のために以下のコードを提供しています

ClassA で記述されたコード (クラス ライブラリ プロジェクトに配置)

public static string Method()
{
    try
    {
        string strdata = ConfigurationManager.AppSettings["UserID"].ToString();
        return strdata;
    }
    catch (Exception e1)
    {
        throw e1;
    }
}

WCF サービスで記述されたコード:-

try
{
   ClassA.Method();
}
catch (Exception e2)
{

}

上記のコードで、webconfig ファイルで UserID 設定を定義するのを忘れた場合、例外は WCF サービス メソッドの catch ブロックにも入るはずですが、発生していません。

4

1 に答える 1

0

WCF コードに表示されない理由はわかりませんが、使用throw e1するとエラーのスタック トレースが失われ、これは一般的に悪いことと見なされます。

正直なところ、間違った理由でここで try-catch ブロックを使用していると思います。すべての try catch コードがなくても、返された値が空か null かを簡単に確認できます。 ConfigurationManager.AppSettings文字列を返します -.ToString()それを呼び出すのは冗長です (ただし、項目が存在しない場合は null 参照例外が発生します)。

私はあなたのコードをこのように書き直します:

public static string Method() 
{

    return ConfigurationManager.AppSettings["UserID"];
}

そして、WCF コードで:

string userID = ClassA.Method();

if (String.IsNullOrEmpty(userID))
{
    // Do something with the error here
}
于 2013-08-29T06:41:49.873 に答える