数据库处理出错大解剖,大师请进? (200分)

  • 主题发起人 主题发起人 土土
  • 开始时间 开始时间

土土

Unregistered / Unconfirmed
GUEST, unregistred user!
看了以前帖,还不是很白。
1:try ...except
try
...
except on e : exception do
showmessage(e.message)
end;
大师处理时是显示e.message还是自己写的

2;在数据感知组件中posterror和deleterror也可处理。
如demo中的dberrors
eKeyViol = 9729; eForeignKey = 9733;其中的9729,9733哪里来的,固定吗
3:是否可以把2中的代码写在1的except下的?
4:你可以自己定义一个错误类,然后将Application.OnException指向它,下面是一个简单的例子.
这样,程序中的任何错误都逃不过它,你就可以将数据库及其它相关的错识代码写在里面,出
了什么问题,根据错误代码来提示,就不用你每个地方来写错误出错了.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unit3;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

procedure AppException(Sender: TObject; E: Exception);

var
Form1: TForm1;
MyExceptionHandle:TMyExceptionHandle;

implementation

uses Unit2;

{$R *.dfm}

procedure AppException(Sender: TObject; E: Exception);
begin
if pos('valid integer',e.Message)>0 then
ShowMessage('OK')
else
Application.ShowException(E);
end;

procedure TForm1.Button1Click(Sender: TObject);
var aa:string;
ii:integer;
begin
aa:='b';
ii:=strtoint(aa);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MyExceptionHandle:=TMyExceptionHandle.Create;
Application.OnException := MyExceptionHandle.AppExeption;
end;

end.
5:ado 和bde两者处理错误有区别吗?
请大师细细道 来,200分送上
6:说说错误处理流程啊》
 
1,老外喜欢原滋原味,国人喜欢自己加工。
2、那些一般是错误代码常量,对于同一引擎来说,一般同一个代码,意义会是相同的。
3、当然可以啊,
4、Application.OnException 中不宜处理所有的错误,原是DB就DB,常规管常规好一点。
5、对同一种编程语言来说,是差不多的,不过BDE是BORLAND做了很久的引擎,它接收的错误多一些,不是原生的ADO有些错误是不能截获的。
6、流程?截获错误----能修正指示用户修正---否则----报告错误----终止程序运行或继续。
 
我一般是这样做提示处理的:

try
//数据操作
except
on e:exception do
begin
//先做数据异常处理,接着
application.messagebox(pchar('数据处理失败!'+#13+#13+e.message),'错误信息',16);
end;
end;
 
我一般是这样的,不要系统提供的错误代码,只要指示出错就行了,一般用户是不需要知道程序在哪出错的.:
try
adoquery.open
except
application.messagebox('操作错误','错误',48);
end;
 
1,自己写,我一般也用
try
adoquery.open
except
application.messagebox('数据库连接错误','警告',MB_OK+MB_ICONWARNING);
end;
2,我在这里处理的少,
4。我不建议这么做。
5,不太一样,
BTW:我不是大师,一家之言,姑妄听之。
 
该有的都有了,[:D][:D][:D]
 
多人接受答案了。
 
后退
顶部