我正在努力做到以下几点:

try {
    // just an example
    $time      = 'wrong datatype';
    $timestamp = date("Y-m-d H:i:s", $time);
} catch (Exception $e) {
    return false;
}
// database activity here

简而言之:我初始化一些要放入数据库的变量.如果初始化因任何原因而失败-例如,因为$TIME不是预期的格式-我希望该方法返回FALSE,而不是将错误的数据输入到数据库中.

但是,这样的错误不是由"catch"语句捕获的,而是由全局错误处理程序捕获的.

有办法吗?我只是觉得这样做会更干净,而不是手动判断每个变量,考虑到99%的情况下没有什么不好的事情发生,这似乎是无效的.

推荐答案

解决方案#1

使用ErrorException将错误转化为异常以处理:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");

解决方案#2

try {
    // just an example
    $time      = 'wrong datatype';
    if (false === $timestamp = date("Y-m-d H:i:s", $time)) {
        throw new Exception('date error');
    }
} catch (Exception $e) {
    return false;
}

Php相关问答推荐

PHP 8.3类型类常数-关闭

PHP FFI—Convert void * to int

根据特定运输类别增加WooCommerce购物车总重量

过滤WooCommerce管理员订单列表(+HPOS)中包含其作者产品的订单

有什么方法可以阻止WordPress主题升级通知吗?

不包括WooCommerce中单独销售的产品

使用PHP编码的字符串与使用OpenSSL编写的shell 代码之间的差异

莫德克斯.当我try 使用pThumb为手机压缩图像时,没有任何react

在PHP项目中安装OpenAI PHP SDK时出现问题

添加不存在的订单元数据以扩展WooCommerce管理订单搜索

扩展 WooCommerce 类触发未捕获错误:未找到WC_Coupon类

Shopware 6 插件:如何删除/迁移布尔配置到多选配置

将自定义保存金额移至 Woocommerce 简单产品中的价格以下

PHP向API发送curl请求

在 groupBy laravel 5.7 中 Select 多列

使用 PHP 的 OAuth 2.0 MAC

PDO 和 SQL 查询结果中日期格式不同的原因可能是什么?

转发和非转发呼叫 - 后期静态绑定

如何在光速网络服务器中使用 apache ..htaccess

如何正确使用Flysystem和Local Adapter