PDA

View Full Version : سوال: تفاوت Exception و EInOutError و... برای تشخیص خطا



farzadkamali
جمعه 20 دی 1392, 21:49 عصر
با سلام
من برای تشخیص خطا از دستور زیر استفاده کردم



ADOConnection1.BeginTrans;
try
.
.
.
except
on E : Exception do
begin
ShowMessage(E.ClassName+': '+E.Message);
module.ADOConnection1.RollbackTrans;
module.db1.Active:=false;
module.db2.Active:=false;
module.db3.Active:=false;
module.db1.Active:=true;
module.db2.Active:=true;
module.db3.Active:=true;
end;
end;


به جای Exception اگه EInOutError یا EDivByZero هم بنویسم باز ارور رو بهم میده.

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

همچنین موارد زیر هم هستند :



Exception
EAbort
EAbstractError
AssertionFailed
EBitsError
ECommonCalendarError
EDateTimeError
EMonthCalError
EConversionError
EConvertError
EDatabaseError
EExternal
EAccessViolation
EControlC
EExternalException
EIntError
EDivByZero
EIntOverflow
ERangeError
EMathError
EInvalidArgument
EInvalidOp
EOverflow
EUnderflow
EZeroDivide
EStackOverflow
EHeapException
EInvalidPointer
EOutOfMemory
EInOutError
EInvalidCast
EInvalidOperation
EMenuError
EOSError
EParserError
EPrinter
EPropertyError
EPropReadOnly
EPropWriteOnly
EThread
EVariantError

اینا با هم چه فرقی داره؟

یوسف زالی
شنبه 21 دی 1392, 09:47 صبح
سلام.
بستگی به دستورات درون بلاک داره. اگر برای هر کدوم از انواع ارور ها کد فعال می شه احتمالا ارور External دریافت کردید.
اون انواع هم دقیقا قواعد کلاس ها رو دنبال می کنند و از هم مشتق شدند. اما این که برای تمام اونها یک رفتار دارید کمی عجیب به نظر می رسه.

farzadkamali
شنبه 21 دی 1392, 15:41 عصر
اکثراً دستورات من مربوط به پایگاه هست. نظیر : حذف،اضافه،ویرایش،جوین جدول ها برای گزارش، گزارش گیری و ... . اگر من از Exception استفاده کنم در هر حال اروری که پیش میاد رو بهم میده.
اصلاً در کل اگر از Exception استفاده کرد همیشه ارور پیش آمده رو میگه.