<?php
class EmailSendingErrorException extends RuntimeException
{
public $message = 'Impossible d\'envoyer l\'email.';
}
class NotificationSendingErrorException extends RuntimeException
{
public $message = 'Impossible d\'envoyer la notification.';
}
class ShortText extends RuntimeException
{
public $message = 'Le texte fourni est trop court.';
}
/**
* @var string $text le contenu du message
* @return bool true en cas de succès
* @throw Exception on error
*/
function sendEmail(string $text): bool
{
if (/*envoie du message échoue*/ true)
{
throw new EmailSendingErrorException();
}
return true;
}
/**
* @var string $text le contenu du message
* @return bool true en cas de succès
* @throw Exception on error
*/
function sendNotification(string $text): bool
{
if (/*envoie de notification échoue*/ true)
{
throw new NotificationSendingErrorException();
}
return true;
}
/**
* @var string $text le contenu du message
* @return bool true en cas de succès
* @throw Exception on error
*/
function sendMessage(string $text): bool
{
if (10 > strlen($text)) {
throw new ShortTextException();
}
try {
sendNotification($text);
} catch (NotificationSendingErrorException $e) {
// Envoyez vous une alerte
// pour vous prévenir que les notifications ne marche pas ;)
} finally {
// finally permet d'exécuter du code quoi qu'il arrive :)
sendEmail($text);
// si une exception est jetée par sendEmail,
// Le return n'est jamais exécuté
return true;
}
}
try {
sendMessage('Hello, ici Greg "pappy" Boyington');
} catch (ShortTextException $e) {
echo $e->message;
} catch (EmailSendingErrorException $e) {
echo 'Une erreur est survenue lors de l\'envoie du message, nos équipes ont été prévenues, veuillez réessayer plus tard';
} catch (Exception $e) {
echo 'Une erreur inattendue est survenue, nos équipes ont été prévenues, veuillez réessayer plus tard';
}
Une erreur est survenue lors de l'envoie du message, nos équipes ont été prévenues, veuillez réessayer plus tard
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Une erreur est survenue lors de l'envoie du message, nos équipes ont été prévenues, veuillez réessayer plus tard