gpt4 book ai didi

php - 当使用错误的类型或错误的参数数量调用 vsprintf 时,有没有办法捕获?

转载 作者:行者123 更新时间:2023-12-05 07:55:57 25 4
gpt4 key购买 nike

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) 我也需要支持生产环境。

最佳答案

一个绝对有效的问题,我发现没有理由拒绝投票......我在创建包含以下内容的消息日志时遇到了同样的问题:

  • vsprintf 格式的字符串
  • 一组参数
  • 收件人名单
  • 发件人
  • A型

在消息日志构造函数中,我执行各种检查,因为其中一些属性可以为 null,并且一些组合没有意义(例如,没有发件人的“聊天”类型,发件人在的收件人列表它等)

因为我需要测试是否将正确数量和类型的参数传递给了 vsprintf,所以我在 try...catch 语句中结束了在我的构造函数中调用 vsprintf,并报告了被捕获的异常。

这并不完美,理想情况下我不需要在构造时“呈现”消息,但它涵盖了我的大部分需求。

希望这对您有所帮助。

关于php - 当使用错误的类型或错误的参数数量调用 vsprintf 时,有没有办法捕获?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29068582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com