我最近为我们的一名员工编写了一个邮件平台供我们使用。该系统运行良好,扩展性好,使用起来很有趣。但是,由于我无法弄清楚如何解决(相当缺乏经验的开发人员)的错误,它目前无法运行。
这个过程是这样的......
然后,后端循环遍历文件的每一行,将值与标题相关联,并将这些值导入数据库。
这一切都非常有效,除非在特定情况下,原始CSV格式不正确。例如......
fname, lname, email
Bob, Schlumberger, bob@bob.com
Bobbette, Schlumberger
Another, Record, goeshere@email.com
如您所见,第二行缺少逗号。这在尝试拉“valArray [3]”(或valArray [2]时会导致错误,对于除我的语言之外的所有语言)。
我正在寻找最有效的解决方案来防止此错误发生。也许我应该检查一下数组长度,然后将它与我们试图拉动的索引进行比较,然后再将其拉出来。但要为每一个价值做这件事似乎效率低下。有人有另一个想法吗?
我们的堆栈是ColdFusion 8/9和MySQL 5.1。这就是我将数组索引称为[3]的原因。
答案 0 :(得分:5)
有ArrayIsDefined(array, elementIndex)
或ArrayLen(array)
似乎效率低下?
你需要编码你需要编码的代码,忘记低效率。在你快速获得它之前(在需要时)正确使用它。
答案 1 :(得分:1)
我想如果你正在寻找另一种方法(不是每次都检查数组长度,虽然这听起来对我来说真的不好),你可以在try / catch中包装每一行插入尝试块。如果失败,则将失败的行填入缓冲区(包括行号和错误消息),然后在批处理完成后将其显示给用户,这样他们就可以看到每个失败的行以及它们失败的原因。这样做的优点是:1)不必每次都明确检查数组长度,2)捕获您可能事先没有预料到的其他错误(例如,对于您的字段,值可能太长)。