作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
vsprintf() 愉快地忽略了以下错误:
// I'd like to tell me that there are too many arguments.
vsprintf("%d", 1, 2);
// this string gets converted to 0! instead of throwing an exception
vsprintf("%d", "nonsense");
有什么方法可以捕获这些类型的错误吗?
编辑
也许我的问题不是很清楚。我需要实际尝试/捕获此类错误,因为我在一个简单的 MySQLi 包装器中使用 vsprintf,因此用户可能会执行以下操作:
DB::select("*")->from("User")->where("salary=%d %s",$bogus_string)
在这种情况下,我需要以一种有意义的方式告诉他们 1) %d 需要一个整数 2) 我不知道如何处理无关的 %s 3) 我也需要支持生产环境。
最佳答案
一个绝对有效的问题,我发现没有理由拒绝投票......我在创建包含以下内容的消息日志时遇到了同样的问题:
在消息日志构造函数中,我执行各种检查,因为其中一些属性可以为 null,并且一些组合没有意义(例如,没有发件人的“聊天”类型,发件人在的收件人列表它等)
因为我需要测试是否将正确数量和类型的参数传递给了 vsprintf,所以我在 try...catch
语句中结束了在我的构造函数中调用 vsprintf,并报告了被捕获的异常。
这并不完美,理想情况下我不需要在构造时“呈现”消息,但它涵盖了我的大部分需求。
希望这对您有所帮助。
关于php - 当使用错误的类型或错误的参数数量调用 vsprintf 时,有没有办法捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068582/
我是一名优秀的程序员,十分优秀!