PDA

View Full Version : سوال: مواجه شدن ارور has stopped working



mahan206
پنج شنبه 03 بهمن 1398, 09:31 صبح
با سلام من برنامه ای با C#‎‎‎ نوشتم تحت شبکه و دربعضی نود ها این ارور مشاهده شده و در بعضی دیگر مشکلی ندارد.کلا تمام مراحل حل این ارور رو هم از داخل اینترنت سرچ کردم رفتم فایده نداشت اگه کسی قبلا این مشکل رو حل کرده ممنون میشم راهنمایی کنه.کار میکرد این نودها و بعد از حدود 10 یا 20 روز این مشکل براشون پیش اومده و روی سیستم دیگه نصب میکنیم مشکلی نداره.
اینا رو هم انجام دادم فایده نداشت لینک (https://www.heyvatech.com/web/articles/view/456/%D8%AD%D9%84-%D8%A7%D8%B1%D9%88%D8%B1-has-stopped-working.html)

the king
پنج شنبه 03 بهمن 1398, 11:45 صبح
با سلام من برنامه ای با C#‎‎‎‎‎‎‎‎‎‎‎‎‎ نوشتم تحت شبکه و دربعضی نود ها این ارور مشاهده شده و در بعضی دیگر مشکلی ندارد.کلا تمام مراحل حل این ارور رو هم از داخل اینترنت سرچ کردم رفتم فایده نداشت اگه کسی قبلا این مشکل رو حل کرده ممنون میشم راهنمایی کنه.کار میکرد این نودها و بعد از حدود 10 یا 20 روز این مشکل براشون پیش اومده و روی سیستم دیگه نصب میکنیم مشکلی نداره.
اینا رو هم انجام دادم فایده نداشت لینک (https://www.heyvatech.com/web/articles/view/456/%D8%AD%D9%84-%D8%A7%D8%B1%D9%88%D8%B1-has-stopped-working.html)
مشکل رو از دید برنامه نویس ببینید، نه کسی که از یک برنامه استفاده میکنه که از کد و محتواش خبری نداره و نمیتونه تغییرش بده. وقتی برنامه ای مثل فتوشاپ یا پاورپوینت و ... با همچین خطایی روبرو بشن، چون دسترسی به کدشون نداریم، طبعا در اینترنت دنبال راه حل عمومی برای اینطور خطا ها میگردیم، یعنی چاره دیگری نداریم. ولی برنامه #C رو شما نوشتید، کدش رو دارید، می توانید تغییرش بدهید، می توانید محل خطا و علش رو پیدا کنید، اون راه حل عمومی که در اینترنت پیدا می کنید برای شما که برنامه نویسش هستید نیست.
فرضا من میام و یک برنامه #C تحت ویندوز Windows Forms App با یک کد ایراد دار مثل این می نویسم، Program.cs رو باز می کنم و قبل از هر چیز سعی می کنم در فایلی با نامی که میدونم در ویندوز معتبر و قابل قبول نیست متنی رو ذخیره کنم :

static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
System.IO.File.WriteAllText("*?:>/", "test");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
}

اگر این برنامه رو داخل محیط ویژوال استدیو اجرا کنم می توانم پیام خطا رو همونطور که انتظار داشتم ببینم :
151293
ولی اگر فایل رو بصورت مجزا اجرا کنم، همون پیامی رو دریافت می کنم که نمیگه مشکل از چیه :
151294
باید در اینترنت دنبال رفع مشکل خطای has stopped working بگردم؟ طبعا نه، مشکل برنامه من رو صرفا من برنامه نویس باید حل کنه، ایراد از کد من بوده.
میام و دورش یک try catch قرار میدم، با پیام مناسب جایگزینش می کنم و در یک فایل debug.txt هم ذخیره اش می کنم تا بعدا بتونم خطایی که در سیستم دیگری ایجاد شده با خواندن محتویات فایل debug.txt بررسی کنم.


static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
try
{
System.IO.File.WriteAllText("*?:>/\", "test");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, ex.GetType().ToString());
System.IO.File.AppendAllText("debug.txt", Environment.NewLine + DateTime.Now + Environment.NewLine
+ ex.GetType() + Environment.NewLine + ex.Message);
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(new Form1());
}
}


151295
اصولا در هر جایی از برنامه شما که دسترسی خاصی نیازه، احتمال عدم موفقیت وجود داره، با فایل سر و کار دارید، با تخصیص حافظه سر و کار دارید، یا ارتباطی برقرار میشه و ... باید یک try catch ای باشه تا خطا ها رو شکار کنید.

mahan206
شنبه 05 بهمن 1398, 17:37 عصر
ممنون لطف کردید