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

نام تاپیک: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

  1. #1

    Question آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    سلام دوستان در یه برنامه دیدم که یکی از دوستان در برنامه اش خطا ها رو به صورت فارسی در یه فرم نمایش میداد میخواستم بدونم در برنامه خودم که یه برنامه حسابداری کوچیک هست مثلا چه خطا هایی رو باید برطرف کنم ؟
    اصلا مدیریت خطا باید به چه شکل باشه؟

    با تشکر

  2. #2
    مدیر بخش آواتار danialafshari
    تاریخ عضویت
    تیر 1387
    محل زندگی
    هر کجا هستم باشم آسمان مال من است
    پست
    2,909

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    سعی کن با Try و Catch مدیریت کنی و پیامش رو می تونی فارسی و کلی بزاری
    ترجمه فارسی یه حسنی که داره باعث نامفهوم شدن متن در Analyze میشه و برای امنیت بهتره

  3. #3
    کاربر جدید آواتار programer97
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    خراسان شمالی
    پست
    20

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    سلام بوسیله ی TRy و catch پیام هاتو مدیریت کن.
    وبرای هر گروه از پیام ها یک پیغام رو چاپ کن. هر چقدر کاربر از دلیل اصلی مشکلات برنامه کمتر بدونه بهتره.
    مثلا برای همه ارور های بانک اطلاعاتی فقط پیام "مشکل در ارتباز با بانک اطلاعاتی" رو چاپ کن.

  4. #4

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    میشه خواهش کنم یه نمونه برام قرار بدید اصلا این سر در نمیارم باید چیکار کنم میتونم خطا ها رو با try , catch پنهان کنم اما نمیدونم چظور باید یه خطا رو ترجمه کنم و به کاربر نمایش بدم مثلا بگه مشکل در اتصال به دیتابیس ؟؟؟؟؟؟

  5. #5

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    همانطور که دوستان گفتند مدیریت خطاها با Try-Catch امکان پذیره.دستورالعمل و نمونه کدشو اگه سرچ کنی پیدا میشه.بعد از پیاده سازی کد برای مدیریت بهتر برای هر ارور یه کد به متن ارور بده.مثلا "ارور 888 : خطا در بانک اطلاعاتی" . اینطوری اگه برنامه این ارور رو داد برای دیباگ کردنش با Ctrl+F سرچ میکنی "ارور 888" و منتقل میشی به محل ارور و توی سرعت دیباگ کردن و سردرگم نشدن خیلی تاثیر داره.مخصوصا اگه یکی خواسته باشه تلفنی ارور رو بهت بگه !

  6. #6

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    این دستور برای جلوگیری خطا هستش که اگه دیتابیس وجود نداشت یا ادرس اشتباه بود پیغام خطا رو بده این دستور در کلاس نوشته شده و در فرم اصلی صدا شده میشه دستور در کلاس.
    public void Connect()
    {
    try
    {
    string cs = "";
    if (isExpress)
    {
    cs = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBHesabDarePoshakSayeBan.mdf;Integrated Security=True;User Instance=True";
    }
    else
    {
    cs = @"server=" + Server + ";database=" + DataBase + ";trusted_connection=yes;";
    //cs = @"server=" + server + ";database=" + database + ";uid=" + user + ";pwd=" + password + ";";
    }
    con.ConnectionString = cs;
    con.Open();
    }
    catch (Exception ex)
    {
    if (!ShowFriendMessage)
    LastError = ex.Message;
    else
    LastError += "اشکال در ارتباط با دیتابیس / با مدیر برنامه تماس حاصل فرمایید / خطا 100";
    }
    }

    فراوخانی دستور در فرم میگیم
                try
    {
    db.Connect();
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    MessageBox.Show("خطا در ارتباط با پایگاه داده)");
    }

  7. #7

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    با سلامدوباره از تمامی دوستان به خاطر راهنمایی ممنونم و خصوصا از davidrobert به خاظر مثال خوبشون... ولی یه کم سخت بود

    catch (Exception ex)
    {
    if (!ShowFriendMessage)
    LastError = ex.Message;
    else
    LastError += "اشکال در ارتباط با دیتابیس / با مدیر برنامه تماس حاصل فرمایید / خطا 100";
    }

    مرسی

  8. #8

    نقل قول: آیا نیاز هست در برنامه خطا ها رو برای کاربر ترجمه کرد چه خطا هایی رو باید براش مشخص کرد؟

    برادر این دستور که دیدید
    catch (Exception ex)
    {
    if (!ShowFriendMessage)
    LastError = ex.Message;
    else
    LastError += "اشکال در ارتباط با دیتابیس / با مدیر برنامه تماس حاصل فرمایید / خطا 100";
    }


    که من از مقدار LastError += استفاده کردم من یه متغییر تعریف کردمدر کلاس DataAccess به نام
    public static bool ShowFriendMessage = false;

    که اگه مقدار برابر با false بود !ShowFriendMessage
    مقدار پیغام اول رو نشان بده یعنی اشکال اصلی رو ولی اگه مقدار true بود در کلاس پیغام فارسی رو نشان بده دیگه این طوری لازم نیست هی دستورات رو عوض کنیم یه متغییر سراری تعریف مکنیم در کلاس و هی صداش میزنیم و با نوشتن مقدار خطا یعنی خطا 100 مربوط به دیتابیس هستش وقتی طرف تماس میگیر و میگه برنامه ایراد داره میگید کد چند میگه 100 میفهمید کدام فرم ایراد رو ایجاد کرده و میرید همان فرم رو میبینید و اشکالیش رو بر طرف میکنید.و با عوض کردن مقدار true یا false مقدار رو فارسی یا انگلیسی میکنید این دستور کلی کلاس من که برای کار با دیتابیس هستش یه با فرامیخونم و هزار بار صداش میزنیم و هی دستور وصل شدن به دیتابیس رو نمی نویسم.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Data.SqlClient;

    namespace Bername_Hesabdare_SayeBan_Poshak
    {
    class DataAccess
    {
    public static bool ShowFriendMessage = false;
    public static string Server = "";
    public static string DataBase = "";
    public static string UserName = "";
    public static string Password = "";
    public static bool isExpress = true;
    public static DataTable dt;
    public SqlConnection con;
    public SqlCommand cmd;
    public SqlDataAdapter da;
    public SqlCommandBuilder cb;

    public string LastError = "";


    public DataAccess()
    {
    con = new SqlConnection();
    cmd = new SqlCommand();
    da = new SqlDataAdapter();
    cb = new SqlCommandBuilder();
    dt = new DataTable();
    cmd.Connection = con;
    da.SelectCommand = cmd;

    }


    public void Connect()
    {
    try
    {
    string cs = "";
    if (isExpress)
    {
    cs = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBHesabDarePoshakSayeBan.mdf;Integrated Security=True;User Instance=True";
    }
    else
    {
    cs = @"server=" + Server + ";database=" + DataBase + ";trusted_connection=yes;";
    //cs = @"server=" + server + ";database=" + database + ";uid=" + user + ";pwd=" + password + ";";
    }
    con.ConnectionString = cs;
    con.Open();
    }
    catch (Exception ex)
    {
    if (!ShowFriendMessage)
    LastError = ex.Message;
    else
    LastError += "اشکال در ارتباط با دیتابیس / با مدیر برنامه تماس حاصل فرمایید / خطا 100";
    }
    }

    public void Disconnect()
    {
    con.Close();
    }
    public DataTable select(string sql)
    {

    try
    {
    cmd.CommandText = sql;
    da.Fill(dt);
    }
    catch (Exception ex)
    {
    if (!ShowFriendMessage)
    LastError = ex.Message;
    else
    LastError += "خطا در خواندن اطلاعات /خطا 101";
    }
    return dt;
    }
    public void DoCommand(string sql)
    {
    try
    {
    cmd.CommandText = sql;
    cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    {
    if (!ShowFriendMessage)
    LastError += ex.Message;
    else
    LastError += " خطا در اجرا دستورات /خطا 102";
    }
    }
    public string newid(string sql)
    {
    string AtCnt;
    con.Open();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sql;
    cmd.Connection = con;
    AtCnt = Convert.ToString(cmd.ExecuteScalar());
    con.Close();
    return AtCnt;
    }
    public DataTable Search(string CTS)
    {
    if (con.State != ConnectionState.Open) con.Open();
    dt = new DataTable();
    cmd = new SqlCommand(CTS, con);
    da = new SqlDataAdapter(cmd);
    cb = new SqlCommandBuilder(da);
    da.Fill(dt);
    return (dt);
    }

    public DataTable I_U_D(string CTS, string CTSIDU)
    {
    if (con.State != ConnectionState.Open) con.Open();
    dt = new DataTable();
    cmd = new SqlCommand(CTS, con);
    da = new SqlDataAdapter(cmd);
    cb = new SqlCommandBuilder(da);
    da.Fill(dt);
    cmd.CommandText = CTSIDU;
    cmd.ExecuteNonQuery();
    return (dt);
    }
    }
    }

    من خودم تو فرم به این صورت تعریف میکنم برای نمایش خطا
                if (db.LastError != "")
    MessageBox.Show(db.LastError);

    موفق باشید.

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

  1. پاسخ: 11
    آخرین پست: پنج شنبه 07 آبان 1388, 13:41 عصر
  2. آیا لازم هست زبانهای برنامه نویسی دات نت تالارهای مختلفی داشته باشند؟
    نوشته شده توسط mina.net در بخش برنامه نویسی مبتنی بر Microsoft .Net Framework
    پاسخ: 6
    آخرین پست: چهارشنبه 06 آبان 1388, 12:13 عصر
  3. آیا امکانش هست یه برنامه رو از خارج کنترل کرد؟
    نوشته شده توسط white fox در بخش برنامه نویسی در 6 VB
    پاسخ: 12
    آخرین پست: دوشنبه 26 دی 1384, 20:43 عصر

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

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