برای ارتباط با مدیر سایت از ID تلگرام ebrahimi_younes@ استفاده نمایید. به سوالات و مشکلات برنامه نویسی پاسخ داده نمی شود.
کتاب های سی شارپ و جاوا به زبان ساده

رفع خطاها

بیشتر اوقات هنگام برنامه نویسی با خطا مواجه می شویم. تقریبا همه برنامه هایی که امروزه می بینید حداقل از داشتن یک خطا رنج می برند.خطا ها می توانند برنامه شما را با مشکل مواجه کنند . در سی شارپ سه نوع خطا وجود دارد :

 

خطای کامپایلری

این نوع خطا از اجرای برنامه شما جلوگیری می کند. این خطا ها شامل خطای دستور زبان می باشد.این بدین معنی است که شما قواعد کد نویسی را رعایت نکرده اید.یکی دیگر از موارد وقوع این خطا هنگامی است که شما از چیزی استفاده می کنید که نه وجود دارد و نه ساخته شده است. حذف فایلها یا اطلاعات ناقص در مورد پروژه ممکن است باعث به وجود آمدن خطای کامپایلری شود.استفاده از برنامه بوسیله برنامه دیگر نیز ممکن است باعث جلوگیری از اجرای برنامه و ایجاد خطای کامپایلری شود.

 

خطاهای منطقی

این نوع خطا در اثر تغییر در یک منطق موجود در برنامه به وجود می آید.رفع این نوع خطاها بسیار سخت است چون شما برای یافتن آنها باید کد را تست کنید.نمونه ای از یک خطای منطقی برنامه ای است که دو عدد را جمع می کند ولی حاصل تفریق دو عدد را نشان می دهد.در این حالت ممکن ات برنامه نویس علامت ریاضی را اشتباه تایپ کرده باشد.

 

استثناء

این نوع خطاها هنگامی رخ می دهند که برنامه در حال اجراست. این خطا هنگامی روی می دهد که کاربر یک ورودی نامعتبر به برنامه بدهد و برنامه نتواند آن را پردازش کند. ویژوال استودیو و ویژوال سی شارپ دارای ابزارهایی برای پیدا کردن و برطرف کردن خطاها هستند.وقتی در محیط کدنویسی در حال تایپ کد هستیم یکی از ویژگیهای ویژوال استودیو تشخیص خطاهای ممکن قبل از اجرای برنامه است. زیر کدهایی که دارای خطای کامپایلری هستند خط قرمز کشیده می شود.
troubleshooting-errors-01
هنگامی که شما با ماوس روی این خطوط توقف کنید توضیحات خطا را مشاهده میکنید.شما ممکن است با خط سبز هم مواجه شوید که نشان دهنده اخطار در کد است ولی به شما اجازه اجرای برنامه را می دهند.به عنوان مثال ممکن است شما یک متغیر را تعریف کنید ولی در طول برنامه از آن استفاده نکنید. (در درس های آینده توضیح خواهیم داد).
troubleshooting-errors-02
درباره رفع خطاها در آینده توضیح بیشتری می دهیم. ErrorList (لیست خطاها) که در شکل زیر با فلش قرمز نشان داده شده است به شما امکان مشاهده خطاها ، هشدارها و رفع آنها را می دهد. برای باز کردن Error List می توانید به مسیرView > Other Windows > Error List بروید.
troubleshooting-errors-03
همانطور که در شکل زیر مشاهده می کنید هرگاه برنامه شما با خطا مواجه شود لیست خطاها در Error Listنمایش داده می شود.
troubleshooting-errors-04
در شکل بالا تعدادی خطا همراه با راه حل رفع آنها در Error List نمایش داده شده است. Error List دارای چندین ستون است که به طور کامل جزییات خطاها را نمایش می دهند.

ستون توضیحات
Description توضیحی درباره خطا
File فایلی که خطا در آن اتفاق افتاده است
Line شماره خطی از فایل که دارای خطاست
Column ستون یا موقعیت افقی خطا در داخل خط
Project نام پروژه ای که دارای خطاست.

اگر برنامه شما دارای خطا باشد و آن را اجرا کنید با پنجره زیر روبرو می شوید :

troubleshooting-errors-05

مربع کوچک داخل پنجره بالا را تیک زنید چون دفعات بعد که برنامه شما با خطا مواجه شود دیگر این پنجره به عنوان هشدار نشان داده نخواهد شد. با کلیک بر رو ی دکمه Yes برنامه با وجود خطا نیز اجرا می شود.اما با کلیک بر روی دکمه NO اجرای برنامه متوقف می شود و شما باید خطاهای موجود در پنجره Error List را بر طرف نمایید. یکی دیگر از ویژگیهای مهم پنجره Error List نشان دادن قسمتی از برنامه است که دارای خطاست.با یک کلیک ساده بر روی هر کدام خطاهای موجود در پنجره Error List ، محل وقوع خطا نمایش داده می شود.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. soha پاسخ دادن

    سلام توی برنامم این خطا هستCannot open database “payegah” requested by the login. The login failed.
    Login failed for user ‘Majid-PC\Majid’.

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون میشم سوالتونو توی انجمن مطرح بفرمایید

  2. akbar پاسخ دادن

    سلام ، من حق عضویت رو پرداخت کردم ولی هنوز مطالب بخش vip رو نمیتونم ببینم

  3. akbar پاسخ دادن

    ببخشید مرورگر هنوز در کش بود . مشکل برطرف شد

    • یونس ابراهیمی پاسخ دادن

      ممنون بابت عضویت، خواهش می کنم…

  4. saleh پاسخ دادن

    سلام خسته نباشین
    یه سوال داشتم.میخواستم بدونم اگه مثلا اشتراک یک ماهه تهیه کنیم،بعد از یک ماه،باز هم میتونیم مطالب سایت رو ببینیم یا باز هم باید هزینه اشتراک بدیم؟
    ممنون

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون، خیر اشتراک یک ماهه فقط واسه یک ماهه

  5. farzane پاسخ دادن

    سلام چطور میتونم پنجره Handle رو باز کنم؟اتوی اجرای خط ب خط

  6. farzane پاسخ دادن

    وقی f10رو میزنی ی کادربه جا یerrorلیست باز میشه ک مقدار دهی داده توش مشخص شده اون کادر رو از کجا باید باز کنم؟

    • یونس ابراهیمی پاسخ دادن

      درس بعد از لینک بالا را بخونید، توضیح دادم

  7. سینا پاسخ دادن

    سلام
    من از ویژوال ۲۰۱۲ استفاده می کنم
    وقتی کد cin و cout استفاده میکنم برای برنامه نااشنا است و خطا میدهد
    مشکل از کجاست لطفا راهنمایی کنین

    • یونس ابراهیمی پاسخ دادن

      سلام دوست عزیز
      cin و cout مال زبان ++C و این سایت آموزش #C

  8. tohidlou پاسخ دادن

    سلام به همگی
    من دوره مبانی c# رو شرکت کردم و فردا هم آخرین جلسه ام هستش.
    برا ثبت نام دوره پیشرفتش هنوز شک دارم
    یعنی فکرمیکنم بدون کلاس هم میتونم یاد بگیرم
    لطفا کسایی که برنامه نویسی رو خودشون یاد گرفتن و پیشرفت هم داشتند راهنماییم کنند کسایی هم که با کلاس رفتن موافقن دلیلشونو بگن لطفا؟؟؟؟

  9. زهرا پاسخ دادن

    سلام .من چند ماهی هست که دارم روی یه پروژه کار میکنم پروژه م تو wpf نوشتم واز mah apps توش استفاده کردم الان میخوام فرم لاگین بسازم ولی به ارور میخورم ببینید من سطح دسترسی برای هرکاربر میخوام تعریف کنم الان میخوام لیستی از کاربرا تو combobox فرم لاگین نمایش داده شه و وقتی پسورد همون کاربر رو وارد کرد سطوح دسترسیش روی فرم اصلی اعمال شه زمانی که توی winform کار میکردم جواب میداد اما الان جواب نمبده من برای ارتباط با پایگاه داده هم از entity frame work استفاده کردم
    کدهایی که نوشتم هم ایناست:
    private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
    {
    TbLKarbar karbar = new TbLKarbar();
    CmbName.ItemsSource = db.TbLKarbars.ToList();
    CmbName.DisplayMemberPath =”Userid” ;
    CmbName.SelectedValuePath = “Password”;

    }

    private void button_Click(object sender, RoutedEventArgs e)
    {

    var q = db.TbLKarbars.Where(c => c.Userid == CmbName.Text).SingleOrDefault();
    if (CmbName.Text == q.Userid && TxtPass.Text == q.Password)
    {
    Setting = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“setting”].ToString());
    BackupRestore = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“backuprestore”]);
    Update = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“update”]);
    Pardakht = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“Pardakht”]);
    daramad = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“daramad”]);
    karbar = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“karbar”]);
    Ashkhas = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“Ashkhas”]);
    Gozareshgiri = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“gozareshgiri”]);
    Gorodaryafti = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“gorohdaryafti”]);
    Gorohpardakhti = Convert.ToBoolean(((DataRowView)CmbName.SelectedItem)[“gorohpardkhi”]);

    new FrmLoad().Show();
    this.Hide();
    new FrmLoad().Show();
    this.Hide();
    }
    else
    {
    MessageBox.Show(“کاربری با این رمز ورود وجود ندارد”);
    }

    }

    و متن ارور هم این:

    An unhandled exception of type ‘System.InvalidCastException’ occurred in Personaccounying MahApps.exe

    Additional information: Unable to cast object of type ‘Personaccounying_MahApps.TbLKarbar’ to type ‘System.Data.DataRowView’.

    اگر کسی راه حل دیگه ای داره بگه ممنون میشم من تا شنبه فرصت دارم خواهش میکنم کمکم کنید