ورود

View Full Version : این error را چگونه handle کنم؟



مرتضی اصغری
چهارشنبه 06 اردیبهشت 1385, 10:58 صبح
سلام.
من یه برنامه نوشتم که یه کنسول رو اجرا میکنه.و به دلایل کاملا مشخص هنگام اجرای کنسول
error زیر اتفاق میفته.و عنوان پنجره ی گزارش کننده هم 16bit MS-DOS Subsystem هستش.
E:\MORTEZA~1\FROMMO~1\MORTEZA~1\BORLAND~1\ON0B0F~1 .COM\4D10~1\1.EXE
The NTVDM CPU has encountered an illegal instruction.
CS:05c2 IP:addd OP:ff ff ff ff ff Choose'Close' to terminate the application.
میخوام ببینم چه طور میتونم مانع از این بشم که سیستم عامل این پیام رو بده؟
و در واقع برنامه من خودش با پیش بینی بروز این error کنسول رو اجرا نکنه و یا اگر کنسول رو
اجرا کرد و این error رخ داد خودش کنسول و پنجره ی گزارش error رو ببنده؟

Arash_j13
پنج شنبه 07 اردیبهشت 1385, 04:23 صبح
کدی که باعث خطا می شه رو توی بلوک


try

excetption
end;


قرارا بدید و بعد می تونید با کمک قسمت excetption استثنا رو پردازش کنید

shobair
پنج شنبه 07 اردیبهشت 1385, 10:52 صبح
سلام
استفاده از بلوک Try میتونه برای نشان ندادن خطا موثر باشه ولی گاهی این خطاها در level پائینتری اتفاق میوفته. خطایی که NTDVM میگیره (NT Dos Virtual Machine) معمولا در level پائینه و بخاطر محدود بودن دسترسی ها در ویندوز NT هستش. مثلا دسترسی سطح پائین به هارد. ممکنه اون کد رو نشه اصلا اجرا کرد
شبیر

مرتضی اصغری
شنبه 09 اردیبهشت 1385, 13:42 عصر
سلام دوستان .
همون طور که shobair گفت این error یه error سطح پایینه و با try نمیشه کنترلش کرد. ولی اونقدر ها هم غیر قابل کنترل نیست. با یکم ور رفتن با پارامترهای تابع CreateProcess تونستم
کنترلش کنم . ولی یه مشکل دیگه به وجود اومده و اون هم یه error که تقریبا همچین چیزیمیگه: insuff memory .close one or more program and then try again.
البته این error رو هم میدونم دلیلش چیه .ولی به قول shobair نمیدونم در چه سطحیه و چه طور باید کنترلش کرد؟اگه میدونید ممنون میشم کمکم کنید.
در ضمن دلیل ایجاد این error هم اینه که برنامه ی من سعی داره یه کنسول رواجرا کنه.این کنسول هم به دلایلی در حال تغییر توسط برنامه ی من هست. بعضی از این تغییرها منجربه افزوده شدن مقداری کد به برخی از قسمت های برنامه میشه. این در حالیه که این افزایش حجم همیشه با موفقیت در header کنسول ثبت نمیشه. حالا اگه این کنسول بخواد اجرا بشه فضای
ram درخواستی که در header ثبت شده از خود برنامه کمتره در نتیجه وقتی loader میخواد لودش کنه میبینه که فضای در دسترس که سیستم عامل بر اساس هدر کنسول در اختیارقرار داده کمه و این error رو ایجاد میکنه. خوب حالا چه طور باید مدیریتش کنم ؟؟؟؟؟؟؟؟؟؟؟