首页 > 其他分享 >FireDAC FDScript发生异常无法捕获的问题。

FireDAC FDScript发生异常无法捕获的问题。

时间:2023-04-13 17:14:17浏览次数:31  
标签:end FireDAC 捕获 FDScript retJson StrListScript Conn

今天在调试程序时发现,如下红色标识代码执行时发生了错误(Project ABTAYServer.exe raised exception class EMSSQLNativeException with message '[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver][SQL Server]INSERT 语句中列的数目小于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。'.),但是Except段无法捕获,百思不得其解,问ChatGPT,提示的不太对,但受其启发,最后发现设置FDScript.ScriptOptions.BreakOnError:=true;以后就可以正常捕获了,这真是一个大坑,很多执行要求数据一致性,原子性,他竟然默认有错误还能继续执行,还能提交事务,真是让人匪夷所思。

function TServerMethods1.ExcuteScript(Script:string): string;
var
  StrListScript:TStringList;
  retJson:ISuperObject;
begin
  StrListScript:=TStringList.Create;
  retJson:=SO();
  try
    StrListScript.Text:=Script;
    Conn.StartTransaction;
    try
      cmScript.ExecuteScript(StrListScript);
      Conn.Commit;
      retJson.S['Code']:='00';
      retJson.S['Msg']:='保存成功';
      result:=retJson.AsJSON();
    Except
      on E:Exception  do
      begin
        Conn.Rollback;
        retJson.S['Code']:='-1';
        retJson.S['Msg']:=E.message;
        result:=retJson.AsJSON();
      end;
    end;
  finally
    StrListScript.Free;
  end;
end;

  

标签:end,FireDAC,捕获,FDScript,retJson,StrListScript,Conn
From: https://www.cnblogs.com/yipin/p/17315475.html

相关文章

  • 为啥我请求那里都写了异常捕获了,还是报这个错?
    大家好,我是皮皮。一、前言前几天在Python白银交流群【喜靓仔】问了一个Python异常处理的问题,这里拿出来给大家分享下。二、实现过程这里粉丝给的信息十分有限,看问题其实还是挺难的,【论草莓如何成为冻干莓】给了一个指导。尝试进行断点定位问题:然后就找到了问题所在:这......
  • 3500/34 125696-01 捕获每个公交车站的GPS位置
    3500/34125696-01捕获每个公交车站的GPS位置因此,要设计特定的路线,必须为每个路线方向创建两条路线及其相应的公交车站。路线被设计成有向图,其中节点被用来表示汽车站,边被用来表示一个汽车站和另一个汽车站之间的距离。该模块使用Googlemaps的API,并对其进行扩展,以定义城市中特......
  • Android自定义捕获Application全局异常
    参考:http://bigcat.easymorse.com/?p=1152packageqianlong.qlmobile.ui;importjava.io.File;importjava.io.FileOutputStream;importjava.io.FilenameFilter;importjava.io.PrintWriter;importjava.io.StringWriter;importjava.io.Writer......
  • 学习-ts变量声明-捕获变量怪异之处
    经典面试题,varsetTimeout会在若干毫秒的延时后执行一个函数(等待其他代码执行完毕)。for(vari=0;i<10;i++){setTimeout(function(){console.warn(i);},1);//全是10}for(vari=0;i<10;i++){console.warn(i)//0-9} 未完待续。。。......
  • flask CBV写法/中间件/异常捕获/请求与响应/session/请求扩展
    flaskcbv写法基于类的视图写法fromflaskimportFlask,requestfromflask.viewsimportMethodView,Viewapp=Flask(__name__)app.debug=True#必须要继承MethodView这个类来编写classLoginView(MethodView):defget(self):print(request.method)......
  • ES6-ES11 ES9正则扩展-命名捕获分组
    视频<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>......
  • .Net 6.0全局异常捕获
    背景:全局异常捕获是我们开发当中不可获取的一个环节,顾名思义就是全局的捕获异常,并响应出去,今天就带着各位童鞋们在.Net6.0当中如何做到全局异常捕获.思路:我们可......
  • Java【全局异常】无法捕获【环绕通知】
    ......
  • visual studio正则表达式替换的捕获组
    代码中有   groupBox.set_Padding(newPadding(3,9,3,3));需要替换为  groupBox.Padding=(newPadding(3,9,3,3)); 除了Padding之外,还有Size之类的其......
  • golang 异常捕获和处理(panic/recover)
    1.异常处理Golang没有结构化异常,使用panic抛出错误,recover捕获错误。异常的使用场景简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后......