try
{
throw;
}
catch(EDBEngineError &bdeError)
{
if(bdeError.Error[0]->SubCode==ERRCODE_KEYVIOL)
错误处理代码...
}
就是无法捕捉到数据库组件里的EDBEngineError主键重复错误
但愿高位帮帮忙
8 个解决方案
#1
题如上
#2
系统的异常捕捉到这个错误了吗?
你为什么把异常处理放在Application里,异常在哪里发生就在哪里try不是更好吗?你把你的异常放在这里,那么其他的异常怎么办?
你为什么把异常处理放在Application里,异常在哪里发生就在哪里try不是更好吗?你把你的异常放在这里,那么其他的异常怎么办?
#3
aawolf(羌狼)兄,我上面的异常是数据库发过来的异常,好像只能在这个事件里捕捉的,我提到的Application不是在主工程里,而是在当前Form上放了一个ApplicationEvents控件的,再说数据(DBMS)里发来的异常再那里捕捉好呢!能给个例子吗?先谢了
#4
高手们能给个回答吗?
#5
-
#6
gz
#7
缺省异常处理窗口是用ShowException显示的一个窗口,其标题为应用程序的Title.我们也可以自定义异常处理函数,以便对异常进行自定义的处理。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnException = HandleException;
}
void __fastcall TForm1::HandleException(TObject *Sender,SysUtils::Exception *E)
{
AnsiString errorstr="应用程序发生了错误.\n"+E->Message;
Application->MessageBox(errorstr.c_str(),"发生异常",MB_OK);
}
#8
请不要在Application->OnException里捕捉数据库异常,没有必要。aawolf说的对,在哪里可能有异常,就在哪里捕捉。完全没有必要将数据库的异常提升到应用级来处理。
#1
题如上
#2
系统的异常捕捉到这个错误了吗?
你为什么把异常处理放在Application里,异常在哪里发生就在哪里try不是更好吗?你把你的异常放在这里,那么其他的异常怎么办?
你为什么把异常处理放在Application里,异常在哪里发生就在哪里try不是更好吗?你把你的异常放在这里,那么其他的异常怎么办?
#3
aawolf(羌狼)兄,我上面的异常是数据库发过来的异常,好像只能在这个事件里捕捉的,我提到的Application不是在主工程里,而是在当前Form上放了一个ApplicationEvents控件的,再说数据(DBMS)里发来的异常再那里捕捉好呢!能给个例子吗?先谢了
#4
高手们能给个回答吗?
#5
-
#6
gz
#7
缺省异常处理窗口是用ShowException显示的一个窗口,其标题为应用程序的Title.我们也可以自定义异常处理函数,以便对异常进行自定义的处理。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnException = HandleException;
}
void __fastcall TForm1::HandleException(TObject *Sender,SysUtils::Exception *E)
{
AnsiString errorstr="应用程序发生了错误.\n"+E->Message;
Application->MessageBox(errorstr.c_str(),"发生异常",MB_OK);
}
#8
请不要在Application->OnException里捕捉数据库异常,没有必要。aawolf说的对,在哪里可能有异常,就在哪里捕捉。完全没有必要将数据库的异常提升到应用级来处理。