由于最近的短信模块老是报SocketErorr错误,有的时候也不确定是哪里有问题,影响短信的销售,所以这里这样写,把出现的异常捕捉到显示出来。然后跳过这个不发送

------------------------------------------------------------

1.让我们先断开网络测试看下当出现SocketErorr的时候会出现什么异常.

      try
MyResult := MyFastSmsApi.HaoSiSmsSend(top_SmsUserName,top_SmsPassWord,frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_task_receiver').AsString,frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_task_content').AsString,'');
except
on E:Exception do ShowMessage(E.ClassName);
end;

下面这样写的代码:确保显示出错的异常原因,跳过异常的不发送

      //-----------------------------
{开始发送}
try
MyResult := MyFastSmsApi.HaoSiSmsSend(top_SmsUserName,top_SmsPassWord,frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_task_receiver').AsString,frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_task_content').AsString,'');
except
on E: Exception do
begin
if E.ClassName = 'EIdSocketError' then
begin
//标记还在未发送里,把异常写入发送结果
MyTopSmsTaskApi.MarkTopDoStatusTimeResultByTopTaskId(frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_sms_task_id').AsString,'0',FormatDateTime('yyyy-mm-dd hh:mm:ss',Now),'网络异常('+E.ClassName+')');
//日志显示
frmSmsTaskMain.Memo1.Lines.Add(sLineBreak+'任务ID-----'+frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_sms_task_id').AsString+'-----发送失败-----网络异常('+E.ClassName+')-----自动跳过');
end else begin
MyTopSmsTaskApi.MarkTopDoStatusTimeResultByTopTaskId(frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_sms_task_id').AsString,'0',FormatDateTime('yyyy-mm-dd hh:mm:ss',Now),'本地未知异常('+E.ClassName+')');
frmSmsTaskMain.Memo1.Lines.Add(sLineBreak+'任务ID-----'+frmClientDm.TopSmsTaskShow_adoq.FieldByName('top_sms_task_id').AsString+'-----发送失败-----本地未知异常('+E.ClassName+')-----自动跳过');
end; //自动跳过进入下一个
frmClientDm.TopSmsTaskShow_adoq.Next;
frmSmsTaskMain.ProgressBar1.Position := frmSmsTaskMain.ProgressBar1.Position + 1;
Application.ProcessMessages;
Continue;
end;
end;

delphi 异常测试(我自己捕捉)的更多相关文章

  1. 廖雪峰Java8JUnit单元测试-2使用JUnit-2异常测试

    1.异常测试 对可能抛出的异常进行测试: 异常本身是方法签名的一部分: * public static int parseInt(String s) throws NumberFormatExcept ...

  2. TestNg 6.异常测试

    * 什么时候会用到异常测试??* 在我们期望结果为某一个异常的时候* 比如:我们传入了某些不合法的参数,程序抛出异常* 也就是我的预期结果就是这个异常看以下的一段代码: package com.cou ...

  3. testng入门教程8 TestNG异常测试

    TestNG跟踪异常处理代码提供了一个选项.可以测试是否需要代码抛出异常或不抛出. @Test注释expectedExceptions 参数一起使用.现在,让我们来看看@Test(expectedEx ...

  4. TestNG异常测试

    用@Test(expectedExceptions = xxx) 声明 package com.janson; import org.testng.annotations.Test; public c ...

  5. TestNG(九) 异常测试

    package com.course.testng.suite; import org.testng.annotations.Test; public class ExpectedExeption { ...

  6. testNG之异常测试

    @Test(expectedExceptions = ) 在测试的时候,某些用例的输入条件,预期结果是代码抛出异常,那么这个时候就需要testNG的异常测试,先看一段会抛出异常的代码 exceptio ...

  7. 转:delphi异常捕获try except语句 和 try finally语句用法

    转:http://www.java123.net/v/936977.html      2015-06-24 09:27:48 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来 ...

  8. delphi异常捕获try except语句 和 try finally语句用法

    原文地址:delphi try except语句 和 try finally语句用法以及区别作者:1865898133 一直写程序都没管他们,也尽量很少用,今天终于想把他给弄个明白,在网上找来,记下! ...

  9. python 异常的引发和捕捉处理

      1.什么是异常(exception): 异常是python发现某个地方出现逻辑错误时,抛出一个信号,即异常的引发.如果有捕捉语句在,则异常信号被捕捉,如果没有则会传递到默认异常处理器(终止程序). ...

  10. SpringMVC09 Converter变流器、数据回显、异常测试

    1.配置web.xml文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3// ...

随机推荐

  1. 简单的git使用命令

    一.Git简介       Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理.Git 是 Linus Torvalds 为了帮助管理 Lin ...

  2. 两个List< string>比较是否相同的N种方法,你用过哪种?

    今天在一技术群看一群大佬讨论: 有没有优雅的写法,比较两个List集合中的元素是不是完全一致... 站长最近也无聊,通过群里的聊天记录和给出的参考链接,简单做做总结,万一后面大家能用上呢? 我们做简单 ...

  3. 【TouchGFX】使用CubeMX创建touchgfx项目 -- 初始篇

    1.系统构成,黑色块表示组件非必须 2.环境准备 CubeMX:6.0.1 touchgfx:4.15.0 rt-thread:2020-8-14 commit Keil:5.30 board:stm ...

  4. WebApi输出json 不要把首字母转为小写

    services.AddControllers().AddJsonOptions(c => { c.JsonSerializerOptions.PropertyNamingPolicy = ne ...

  5. 重写SpringCloudGateway路由查找算法,性能提升100倍!

    如果你也在做SpringCloudGateway网关开发,希望这篇文章能给你带来一些启发 背景 先说背景,某油项目,通过SpringCloudGateway配置了1.6万个路由规则,实际接口调用过程中 ...

  6. [转帖]ntp和chrony

    https://www.cnblogs.com/hiyang/p/12682234.html#:~:text=chrony%20%E7%AE%80%E4%BB%8B%20chrony%20%E6%98 ...

  7. [转帖]使用Rclone实现minio数据的迁移

    使用Rclone实现minio数据的迁移 一.准备 1.1 使用工具 rclone:开源的对象存储在线迁移工具,用于文件和目录的同步,支持阿里云的oss.minio .亚马逊S3 等. 1.2 注意事 ...

  8. [转帖]关于winrm远程ps登录执行出现中文乱码和?乱码问题及其解决办法

    https://segmentfault.com/a/1190000040566946?utm_source=sf-similar-article python的winrm库提供了命令行远程连接的功能 ...

  9. vue 半场动画进入状态

    <style> .box{ width: 30px; height: 30px; border-radius: 50%; background: red; } </style> ...

  10. Docker系列教程01--简介

    Docker 入门教程   作者: 阮一峰 日期: 2018年2月 9日 2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么, ...