try
  //StartTrans
  //to do something
  //CommitTrans
except
  //RollBackTrans
  //rasise exception
end;

解决方案 »

  1.   

    这些异常是数据库发出的,不是系统和delphi发出的,
    所以你自己要尽量避免。
      

  2.   

    空值你可以在保存前判断啊。主键重复则可用try  except end来处理
      

  3.   

    解决的办法是,你不必在BDE就把该字段设为不能为空或主键,而是在程序中加一些代码实现让该字段不能为空或相应字段不能重复。
      

  4.   

    //空值在数据源的beforepost中判断
    if Query1.fieldbyname('sss').asstring='' then
       begin
       application.messagebox('请填写sss!','系统提示',mb_ok+mb_iconerror);
       abort;
       exit;
       end;
    //try
    try
    Query1.post;
    except
    showmessage('关键字重复!');
    Exit;
    end;