You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何隐藏SMS服务API报错并保障程序正常运行?

实现静默发送短信不中断程序的方案

你可以根据自己的使用场景选择以下任意一种方案:

方案1:全局忽略Kavenegar相关异常

如果所有场景下调用Kavenegar接口失败都不需要报错,直接在全局异常处理器中配置即可:
修改app/Exceptions/Handler.php的register方法:

public function register()
{
    // 忽略Kavenegar接口返回的业务错误(如api key错误、余额不足、签名错误等)
    $this->reportable(function (\Kavenegar\Exceptions\ApiException $e) {
        // 可选:将错误写入日志,方便后续排查
        // \Log::error('Kavenegar API错误:' . $e->getMessage());
        return false;
    });

    // 忽略Kavenegar接口请求的网络错误
    $this->reportable(function (\Kavenegar\Exceptions\HttpException $e) {
        // \Log::error('Kavenegar 网络错误:' . $e->getMessage());
        return false;
    });
}

该方案会全局屏蔽Kavenegar的所有API和网络异常,不需要修改原有发送逻辑

方案2:仅通知场景下忽略发送异常(推荐)

如果仅需要通知功能下的短信发送失败不报错,建议自定义Kavenegar通知通道:

  1. 新建自定义通道文件app/Notifications/Channels/KavenegarSilentChannel.php
<?php
namespace App\Notifications\Channels;

use Illuminate\Notifications\Notification;
use Kavenegar\Laravel\Channel\KavenegarChannel as BaseChannel;
use Kavenegar\Exceptions\ApiException;
use Kavenegar\Exceptions\HttpException;

class KavenegarSilentChannel extends BaseChannel
{
    public function send($notifiable, Notification $notification)
    {
        try {
            parent::send($notifiable, $notification);
        } catch (ApiException | HttpException $e) {
            // 错误可写入日志,不抛出
            // \Log::info('通知短信发送失败:' . $e->getMessage());
            return;
        }
    }
}
  1. 修改通知类的via方法,替换通道为自定义的静默通道:
public function via($notifiable)
{
    return [\App\Notifications\Channels\KavenegarSilentChannel::class];
}

该方案不会影响其他场景下Kavenegar接口的异常抛出,可控性更高

方案3:手动调用发送时直接捕获异常

如果你是直接调用Kavenegar发送接口,不是通过Laravel通知系统,直接用try-catch包裹发送逻辑即可:

try {
    $api = new \Kavenegar\KavenegarApi("你的API_KEY");
    $api->Send('10004346', '用户手机号', 'welcome to app');
} catch (\Exception $e) {
    // 所有异常直接忽略,程序继续执行
}

提示:建议不要完全吞掉异常,最好将错误信息写入后台日志,避免后续出现短信功能完全不可用但无法定位原因的问题。

内容的提问来源于stack exchange,提问作者Mojtaba Delshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:00:03