نمایش نتایج 1 تا 10 از 10

نام تاپیک: کاربرد throw new در مدیریت خطاها

  1. #1

    کاربرد throw new در مدیریت خطاها

    دوستان برای نمایش متن خطاها به کاربر در چه مواقعی باید از throw new استفاده کنیم و در چه مواقعی از messagebox

  2. #2
    کاربر دائمی آواتار fjm11100
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    43
    پست
    658

    نقل قول: کاربرد throw new در مدیریت خطاها

    بطور کلی پیشنهادم اینه که از MessageBox همیشه استفاده کنی چون حس بهتری به کاربر میده که اوضاع تحت کنترله

  3. #3

    نقل قول: کاربرد throw new در مدیریت خطاها

    من نپرسیدم که از کدوم استفاده کنم
    پرسیدم کاربرد throw new در مدیریت خطاها چی هستش

  4. #4
    کاربر دائمی آواتار fjm11100
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    تهران
    سن
    43
    پست
    658

    نقل قول: کاربرد throw new در مدیریت خطاها

    پرسیدی کی از کدوم استفاده کنی
    خب این که پرسیدن نداره یک f1 روش بزنی msdn میگه که برای ساخت خطا است که یا در catch جهت تغییر خطا و پیامش و یا برای ایجاد خطای جدید در مواقعی که خطای استانداردی رخ نداده و شما میخواهید خطا تولید کنید مثلا قرار باشه کاربر عدد منفی وارد نکنه و کرده یک خطای جدید می سازید و اعلان میکنید

  5. #5

    نقل قول: کاربرد throw new در مدیریت خطاها

    throw یعنی پرتاب. فرض کن در لایه dal یک استثناء رخ میده اما برای بررسی اون باید اونو به لایه دوم پاس بدی به خاطر همین فقط throw میکنی و در لایه دوم اونو catch میکنی و بررسیش میکنی و مثلا ازش log میگیری.
    در لایه dal داریم:

    public void DoSomethingOnDbInDal()
    {
    try
    {
    // فرض کنید در عمل درج ، کلیداصلی تکراریست
    }
    catch (SqlException)
    {
    throw;
    }
    }

    حالا برای نمایش پیغام به کاربر باید استثنائی رو به لایه سوم ارسال کنی تا با مسیج باکس به کاربر پیغام نمایش داده بشه حالا میتونی برحسب نوع خطا ، استثناء با پیغام مناسب رو new و پرتاب کنی و در لایه سوم اونو میگیری و نمایش میدی.
    در لایه دوم(منطق) داریم:

    public void DoSomethingInbusinessLayer()
    {
    try
    {
    dal d = new dal();
    d.DoSomethingOnDbInDal();
    }
    catch (SqlException sqlEx)
    {
    // logging sqlEx
    // after logging
    if (sqlEx.Number == 2627)
    {
    throw new Exception("کد تکراریست", sqlEx.InnerException);
    }
    }
    }

    در لایه سوم داریم:

    private void DoSomethingInPresentationLayer()
    {
    try
    {
    pl p = new pl();
    p.DoSomethingInbusinessLayer();
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    }

  6. #6

    نقل قول: کاربرد throw new در مدیریت خطاها

    ببخشید دوتا سوال برام پیش اومد:
    ۱-مگه در برنامه نویسی سه لایه مدیریت خطاها در لایه دوم صورت نمیگیرد؟چرا در لایه dal کدها را در بلاک try,cath قرار دادید؟یعنی در برنامه نویسی سه لایه باید برای مدیریت خطاها به همین شکل عمل کنیم؟
    ۱- اگر این تیکه کد را اجرا کنیم متن خطایی که به کاربر نمایش داده میشود "کد تکراریست" است یا متن انگلیسی؟

  7. #7
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: کاربرد throw new در مدیریت خطاها

    ببینید وارد لایه نشید. Throw ربطی به برنامه های چند لایه نداره. MessageBox از کلاس System.windows.Forms میاد و معلومه از این کنترل در کلاسهای فرم استفاده میشه و نه کلاس های معمولی. بنابراین وقتی شما دارید توی یک کلاسی کدنویسی میکنید اگز استثنایی رخ بده شما اون استثناء رو با استفاده از کلمه throw قرار میدید. در آخر هم در فرم ها و یا کنترلهاتون برای نمایش خطا با استفاده از try و catch و MessageBox اون خطا رو نمایش میدید.

  8. #8

    نقل قول: کاربرد throw new در مدیریت خطاها

    میدونم ربطی به برنامه نویسی لایه ای نداره
    سوال من در رابطه با مدیریت خطا در برنامه نویسی لایه ای بود
    ایا برای مدیریت خطاها در برنامه نویسی سه لایه در هر سه لایه باید کدها را در بلاک try,cath قرار بدیم؟مثل کد بالا؟
    و دوم این که در کد بالا چه خطایی به کاربر به نمایش در میاد ؟متن فارسی کد تکراریست یا متن انگلیسی

  9. #9
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: کاربرد throw new در مدیریت خطاها

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    ایا برای مدیریت خطاها در برنامه نویسی سه لایه در هر سه لایه باید کدها را در بلاک try,cath قرار بدیم؟مثل کد بالا؟
    هرجایی که نیاز باشه

    نقل قول نوشته شده توسط negar.rafie مشاهده تاپیک
    دوم این که در کد بالا چه خطایی به کاربر به نمایش در میاد ؟متن فارسی کد تکراریست یا متن انگلیسی
    چرا تست نمیکنید؟ هر exception که رخ بده موقع نمایش دادن متن همون نمایش داده میشه.موقع رخ دادن استثناء زیر که Mahmoud.Afrad فرمودن:
     throw new Exception("کد تکراریست", sqlEx.InnerException);

    متن همین استثنا نمایش داده میشه چون exception قبلی که SqlException بود در قسمت catch اداره شده و استثناء جدیدی درش تعبیه شده و اون استثناء اولی دیگه در اون قسمت بدلیل وجود try و catch وجود نداره(بجز InnerException که در استثنای جدید قرار دادن).

  10. #10

    نقل قول: کاربرد throw new در مدیریت خطاها

    کد بنده فقط یک مثال بود برای اینکه بفهمید هر جایی نباید استثناء رو new کنید بعضی جاها هم کافیه فقط پرتاب بشه. فقط جایی که نیاز باشه مثلا تغییر متن پیغام به فارسی.

    در مورد فارسی یا انگلیسی بودن پیغام اگر ترتیب رو متوجه بشید میفهمید که استثنائی که ما new کردیم نمایش داده میشه(متن فارسی).

تاپیک های مشابه

  1. پاسخ: 5
    آخرین پست: چهارشنبه 11 فروردین 1389, 11:46 صبح
  2. مدیریت خطاها در ASP.NET
    نوشته شده توسط behnam-s در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: شنبه 17 مرداد 1388, 13:45 عصر
  3. خبر: مدیریت خطاها در هنگام اجرای فرامین SQL
    نوشته شده توسط K.Mohammadreza در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 3
    آخرین پست: دوشنبه 18 خرداد 1388, 22:46 عصر
  4. سوال در زمینه مدیریت خطاها
    نوشته شده توسط amirferdowsi در بخش ASP.NET Web Forms
    پاسخ: 12
    آخرین پست: جمعه 27 دی 1387, 22:30 عصر
  5. سوال: مدیریت خطاها
    نوشته شده توسط masoodp666 در بخش VB.NET
    پاسخ: 10
    آخرین پست: سه شنبه 04 تیر 1387, 15:14 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •