لا يتم اكتشاف استثناء FaultException () الذي تم إلقاؤه بواسطة الخدمة بواسطة Client Catch (FaultException )

StackOverflow https://stackoverflow.com/questions/3032303

سؤال

حسنًا ، أعلم أنني أفتقد شيئًا هنا. لدي عقد العملية التالي:

public double DivideByZero(int x, int y)
{                   
    if (y == 0) 
    { 
        throw new FaultException<ArgumentException>
          (new ArgumentException("Just some dummy exception")
          ,new FaultReason("some very bogus reason"), new FaultCode("007"));
    }
    return x / y;
}

والمتابعة مأخوذة من العميل:-

  Console.WriteLine("Enter the x value");
  string x = Console.ReadLine();
  Console.WriteLine("Enter the Y value");
  string y = Console.ReadLine();
  try
  {
      double val = client.DivideByZero(Convert.ToInt32(x), Convert.ToInt32(y));
      Console.WriteLine("The result is " + val.ToString());
  }
  catch(FaultException<ArgumentException> exp)  
  {
      Console.WriteLine("An ArgumentException was thrown by the service "+ exp.ToString());    
  }
  catch (Exception exp)
  {
      Console.WriteLine(exp.ToString());
  }

في الحالة المذكورة أعلاه ، لا يتم تنفيذ Catch (expception exp) (لا يتم تنفيذ كتلة الصيد الأولى مع engumentException في رمز العميل). ومع ذلك ، عندما أقوم بإزالة PresumentException للحصول على catch (expception excception) ، يتم تنفيذ كتلة الصيد نفسها. لست متأكدًا من ذلك لأنني أرمي خطأ في عقد التشغيل الخاص بي. هل أفتقد أي شيء هنا.

نقدر مساعدتكم ، آشيش

تحرير:- عندما قمت بتحديث مرجع الخدمة في موكلي ، تمكنت من التقاط FaultException<ArgumentException> استثناء.

هل كانت مفيدة؟

المحلول

جربه مع FaultException<DataContract> لبعض نوع عقد البيانات التعسفي. إذا نظرت إلى الكود الذي تم إنشاؤه للخطأ في فئة الوكيل ، أراهن أنك سترى أن ArgumentException ليس تسلسلًا بالطريقة التي تتوقع بها.

نصائح أخرى

إذا كنت تستمد فئة الاستثناء ، فتأكد من أن استثناءك المخصص لديه مُنشئ التسلسل

protected MyCustomException(
          SerializationInfo info,
          StreamingContext context)
            : base(info, context) { }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top