我的应用程序使用 QuantumGrid (v6.56) 和 TSimpleDataSet 作为其数据源。
问题:如果用户在数字字段中输入非数字值,则会引发异常。代码未到达 OnBeforePost 处理程序。
如果在OnBeforePost之前抛出异常,应用程序如何捕获错误(并向用户显示消息) ?
堆栈跟踪:
exception class : EDatabaseError
exception message : '...' is not valid Integer value for Field <somefieldname>
main thread ($504):
00526c7e +082 EditBooking.exe DB DatabaseError
00526d0f +04b EditBooking.exe DB DatabaseErrorFmt
0052c428 +07c EditBooking.exe DB TIntegerField.SetAsString
0052af30 +00c EditBooking.exe DB TField.SetText
0052abf9 +021 EditBooking.exe DB TField.SetEditText
007c3a3f +053 EditBooking.exe cxDBData
007e14a8 +018 EditBooking.exe cxGridDBDataDefinitions TcxGridDBDataController.UpdateData
006f8159 +039 EditBooking.exe cxCustomData TcxCustomDataProvider.DoUpdateData
007c1c18 +008 EditBooking.exe cxDBData TcxDBDataLink.UpdateData
0053325d +021 EditBooking.exe DB TDataLink.UpdateRecord
005333f8 +0d8 EditBooking.exe DB TDataLink.DataEvent
007c1683 +00f EditBooking.exe cxDBData TcxDBDataLink.DataEvent
00533973 +03f EditBooking.exe DB TDataSource.NotifyLinkTypes
005339a2 +01e EditBooking.exe DB TDataSource.NotifyDataLinks
005339cf +023 EditBooking.exe DB TDataSource.DataEvent
005392ad +131 EditBooking.exe DB TDataSet.DataEvent
00553d7c +058 EditBooking.exe DBClient TCustomClientDataSet.DataEvent
00539396 +042 EditBooking.exe DB TDataSet.UpdateRecord
0053a356 +006 EditBooking.exe DB TDataSet.Post
0055677c +054 EditBooking.exe DBClient TCustomClientDataSet.Post