
یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شیگرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفهای و امکانات کامل!
مشاهده بیشتر
یادگیری MVC Core از مبانی تا پیشرفته: شیگرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژههای کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!
مشاهده بیشترمشخصات مقاله
مدیریت خطا در WCF
WCF – مدیریت خطا (Exception Handling)
در حین توسعه ی سرویس، برنامه نویس ممکن است با مشکلات و خطاهای پیشبینی نشده مواجه شود که این خطاها بایستی به روش صحیح به کلاینت نمایش داده (گزارش) شوند. خطاها که تحت عنوان exception نیز شناخته می شوند، معمولا با نوشتن ساختمان های try/catch مدیریت می شوند، اما از آنجایی که کلاینت هایی استفاده کنند از سرویس ممکن است از تکنولوژی های مختلف استفاده کنند، در WCF نمی توان خطاها را صرفا با try/catch اداره کرد.
در فریم ورک WCF برای این منظور می توان از Fault Contract استفاده کرد.
Fault Contract خطاهای رخ داده در یک سرویس را به صورت مستند (برای مشاهده) در اختیار کلاینت قرار می دهد. در زیر با ذکر مثالی ساده سعی می کنیم این مفهوم را بهتر تشریح کنیم.
ایجاد یک سرویس ماشین حساب
گام اول – یک سرویس ماشین حساب برای انجام عملیات تقسیم می نویسیم که در صورت لزوم خطاهای مربوطه را ایجاد (throw) می کند.
using System; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Runtime.Serialization; usingSystem.ServiceModel; usingSystem.Text; namespace Calculator { // NOTE: You can use the "Rename" command on the "Refactor" menu to change // the interface name "IService1" in both code and config file together. [ServiceContract] public interface IService1 { [OperationContract] int divide(int num1, int num2); // TODO: Add your service operations here } }
کد فایل کلاس را در تصویر زیر مشاهده می کنید:

حال زمانی که سعی می کنیم 10 را بر صفر تقسیم کنیم، سرویس ماشین حساب خطا پرتاپ می کند.


این خطا را می توان با بلوک try/catch مدیریت کرد.

حال زمانی که سعی می کنیم یک عدد صحیح را بر صفر تقسیم کنیم، بجای ایجاد خطا مقدار 10 را برمی گرداند چرا که با استفاده از ساختمان catch این exception را مدیریت کردیم.

گام دوم – در این مرحله با استفاده از شی FaultException اطلاعات خطا را از سرویس به کلاینت گزارش می دهیم.
public int Divide(int num1, int num2) { //Do something throw new FaultException("Error while dividing number"); }