- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个API,它将我们的数据库的一部分公开给客户端。此API的一部分要求针对特定条件发送某些HTML响应代码。通过简单的检查通常很容易,但是我看不到如何在向SQL提交无效日期的情况下捕获(例如)“InvalidDateTimeException”错误。
我曾尝试转储ERROR和cfcatch变量,但是尽管它们生成了巨大的堆栈跟踪,但我看不到任何可轻松解析以检查特定类型错误的字段(缺少对错误消息或堆栈跟踪进行文本搜索)。
我也可以使用regex进行预检查,例如
(\ d {4})-(\ d {2})-(\ d {2})(\ d {2}):(\ d {2}):(\ d {2})
但这仍然会产生无效的日期。 Coldfusion还提供了一些日期验证,但我已经读到它是particularly bad。这也不会帮助其他不处理日期的情况。
简而言之:对Coldfusion中的“InvalidDateTimeException”等特定错误使用react的最佳方法是什么?
[编辑]
评论中的一些说明-我们正在使用MYSQL 5和cfqueryparams。我们在澳大利亚在这里使用'euro'日期格式,但是如果api用户提供ISO格式日期(yyyy-mm-dd)以避免混淆,将是首选方法。
最佳答案
好吧....我的建议是在错误到达SQL之前就将其捕获。您没有指定DBMS(SQL Server,MySQL等),所以我将重点介绍ColdFusion解决方案。我希望这些建议之一可以为您指明正确的道路。
选项:
<cfscript>
isosampledate = "2013-06-05 14:07:33";
passesValidation = false;
expectedDatePattern = "\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}";
try {
if (refind(expectedDatePattern,isosampledate)) {
datePortion = listGetAt(isosampledate,1," ");
timePortion = listGetAt(isosampledate,2," ");
yearPart = listGetAt(datePortion,1,"-");
monthPart = listGetAt(datePortion,2,"-");
dayPart = listGetAt(datePortion,3,"-");
hoursPart = listGetAt(timePortion,1,":");
minutesPart = listGetAt(timePortion,2,":");
secondsPart = listGetAt(timePortion,3,":");
thisUSDate = createDateTime(yearPart,monthPart,dayPart,hoursPart,minutesPart,secondsPart)
if (isValid("usdate",thisUSDate) {
passesValidation = true;
sqlDate = CreateODBCDateTime(thisUSDate);
}
}
} catch (e:any) {
passesValidation = false;
}
</cfscript>
关于coldfusion - Coldfusion 8对特定错误做出响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952144/
我创建了一个库项目,然后构建它,获取 .aar 并解压缩它。获取包含库的 classes.jar 文件,并将其添加到另一个项目中。该项目识别我的文件,我可以从中调用方法和函数。我的问题是我尝试从我的库
这不是现实世界的问题,我只是想了解如何创建 promise 。 我需要了解如何为不返回任何内容的函数做出 promise ,例如 setTimeout。 假设我有: function async(ca
我是 Promise 的新手。我写了两个例子: 第一个是: new RSVP.Promise(function (resolve, reject) { setTimeout(function
我有一个 nodejs (express) 作为服务器端,一个 angular 6 作为客户端。在服务器中我有中间件功能,可以进行 session 检查。如果 session 无效或不存在,我想向客户
我有一个 nodejs (express) 作为服务器端,一个 angular 6 作为客户端。在服务器中我有中间件功能,可以进行 session 检查。如果 session 无效或不存在,我想向客户
我有四个 I/O 操作:A、B、C 和 D。它们中的每一个都应该使用 vertx.executeBlocking 来执行。我应该有以下行为: //PSEUDOCODE waitForExecuteBl
我是一名优秀的程序员,十分优秀!