PDA

View Full Version : error exception



fm_mash
پنج شنبه 15 اردیبهشت 1384, 08:42 صبح
سلام
من یک جدول با یک فیلد اصلی دارم
می خواهم اگه کسی داده تکراری وارد کرد یک پیغام بدهد
بنابراین از try except استفاده کردم
وقتی که اجرا می کنم error مربوط به eoleexception را میدهد
ولی برای کنترل آن on eoleexception do را گذاشتم ولی داخل except نمی شود
چطوری می تونم نوع error را پیدا کنم
مرسی

عشق دلفی
پنج شنبه 15 اردیبهشت 1384, 12:15 عصر
سلام.
تو پیغام خطایی که میده حتما کد خطا رو هم ذکر کرده.
شما ازون کد استفاده کن.
نمیدونم این کار روش معمولیه یا نه. ولی من که از این روش جواب گرفتم.


داخل Try...Except اینو بزار:


on E: EOleException do begin
if Integer(E.ErrorCode) = Integer(-2147203048) then
//عملیات مورد نظر


فعلا خداحافظ

Touska
پنج شنبه 15 اردیبهشت 1384, 12:19 عصر
به این روشی شما استفاده کردید میگن مدیریت خطا و کاملا درسته. :flower:

و این مدیریت خطا ها فقط در فایل exe عمل می کنند.

fm_mash
شنبه 17 اردیبهشت 1384, 07:18 صبح
سلام
ولی در این خطا من کد خطاییی نمی بینم

fm_mash
شنبه 17 اردیبهشت 1384, 07:23 صبح
لطفا منو راهنمایی کنید
مرسی

عشق دلفی
شنبه 17 اردیبهشت 1384, 12:34 عصر
سلام.



ولی در این خطا من کد خطاییی نمی بینم

راست میگی اینجا کد خطا رو نگفته.

شما شرایطی ایجاد کن که این خطا دوباره بوجود بیاد. بعدش هم اونو هندل کن و کد خطا رو به صورت یک پیغام روی مانیتور نمایش بده (یعنی کد زیر رو بنویس):




except
on E: EOleException do
ShowMessage(IntToStr(E.ErrorCode));


شماره خطا رو که ازین طریق پیدا کردی بعدش دیگه همون روال بالا رو پیاده کن.

Touska
شنبه 17 اردیبهشت 1384, 19:22 عصر
بعضی از خطاها قبل از اینکه به دست شما برسن توسط ابزاری که شما از آن استفاده می کنید. مدیریت می شوند

به همین خاطر بعضی وقت ها شما شماره خطا رو نمی بینید. مثلا خطا های Indy و KDTELE

موفق باشید :flower:

حمیدرضاصادقیان
شنبه 17 اردیبهشت 1384, 20:46 عصر
خوب میتونی هنگامی که میخوای اطلاعات رو ذخیره کنی از TRY استفاده کنی که اگر خطایی داد درEXcept اونو ردش کنی. :sunglass:

Touska
شنبه 17 اردیبهشت 1384, 21:20 عصر
ما یک ساعت روی این بحث می کنیم که شماره خطا رو داشته باشیم نه خطا رو رد کنیم.

:flower:

amirrf
یک شنبه 18 اردیبهشت 1384, 23:24 عصر
سلام
من یک جدول با یک فیلد اصلی دارم
می خواهم اگه کسی داده تکراری وارد کرد یک پیغام بدهد
بنابراین از try except استفاده کردم
وقتی که اجرا می کنم error مربوط به eoleexception را میدهد
ولی برای کنترل آن on eoleexception do را گذاشتم ولی داخل except نمی شود
چطوری می تونم نوع error را پیدا کنم
مرسی
سلام،
احتمالا از ADO استفاده می کنید. بنابراین هنگامی که استثنا رخ داد از ADOConnection.Errors اطلاعات کامل خطای SQL را بگیرید.


const
ECKeyViolation = 2627;
SKeyViolation = 'رکورد تکراری است';
...
if ADOConnection1.Errors.Count > 0 then
if ADOConnection1.Errors[0].NativeError = ECKeyViolation then
ShowMessage(SKeyViolation);

EOLEException یک اسنثنای کلی است و کد خطای SQL رخ داده را به همراه ندارد.

V60
دوشنبه 19 اردیبهشت 1384, 09:58 صبح
سلام
مابقی کدهای خطای sql را ازکجا می شه پیدا کرد؟
با تشکر

majid_afra222
سه شنبه 20 اردیبهشت 1384, 09:10 صبح
سلام
تو بانکی اطلاعاتی SQL Server تو جدول sysmessages
یه select ازش بکن تا همه خطاها رو با توضیحات و شماه های خطا ببینی