PDA

View Full Version : سوال: روشهاي كنترل خطا توسط برنامه نويس چيست؟



bobrus
سه شنبه 31 اردیبهشت 1387, 14:28 عصر
دوستان لطف كنن به منه تاز وارد در #C ياد بدن كه چطوري خطا ها رو توي برنامه كنترل كنم يعني به برنامه بگم اگر خطايي رخ داد چه پيغامي بده يا چه كاري انجام بده؟

hozouri
سه شنبه 31 اردیبهشت 1387, 15:11 عصر
با دستورات Try , Catch , finally باید زوی خطاهای پروژت کنترل داشته باشی.
که به این صورت استفاده می شه :
Try:
{
}
catch:
{
}
finally
{
}

در قسمت try دستورها تا وقتی اجرا میشن که دستورات Error نداشته باشه.
قسمت catch زمانی اجرا می شه که دستورات داخل try خطا گرفته باشن و در قسمت finally هم دستور هایی رو باید بنویسی که چه با خطا گرفتن یا نگرفتن دستورات اجرا می شن.

برای بدست آوردن پیغام خطا هم از دستور زیر استفاده کن :
catch(Exeption exp)
{
messagebox.show(exp.tostring());
}

علیرضا مداح
سه شنبه 31 اردیبهشت 1387, 15:19 عصر
سلام دوست عزیز
منظور شما Automatic Exception Handling است ، کد زیر را در فایل Program.cs قرار دهید :


using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
namespace WindowsApplication61
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.ThreadException +=new System.Threading.ThreadExceptionEventHandler(Appli cation_ThreadException);
Application.Run(new Form1());
}
public static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.ToString());
}
}
}

baran_mehr
سه شنبه 31 اردیبهشت 1387, 18:17 عصر
با سلام خدمت داداش گلم

با یه مثال سعی میکنم یه توضیح مختصر بدم....فرض کنید بر روی فرم یک شئ textbox قرار داره و ما میخوای کنترول خطا یا Try رو ازمایش کنیم...برای مثال ما میخوام که اگر کسی درون textbox ما مقدار غیر عددی وارد کرد برنامه اون رو کنترول کنه و پیغام مناسبی بده


try
{
if (Int32.Parse(textBox1.Text) > 10)
{
throw new FormatException ();
}
}

catch (FormatException)
{
MessageBox.Show("مقدار وارد شده دارای فرمت غیر عددی می باشد");
}

finally
{
textBox1.Text = "";
}
در مثال بالا ما کدی که احتمال میدیم ممکنه خطا داخلش اتفاق بیفته را درون try قرار میدیم و بعد از اون با catch های مورد نیاز اون رو پشتیبانی میکنیم...چون ممکنه مقدار وارد شده غیر عددی باشه پس احتمال به وجود امدن خطای FormatException هست پس یک catch برای این احتمال مینویسیم و داخلش نحوه بر خورد با این خطا را مشخص میکنیم .که من در اینجا یک پیغام قرار دادم.

اما...دستور finally دستوری است که چه خطا رخ بده و یا نده این دستور اجرا میشه..پس این دستور کاری به خطاها نداره و انجام وظایفی رو بر عهده داره که شما میخواهین در هر بار اجرا اون هم اجرا بشه

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

throw new FormatException ();
موفق باشی.