Gestion des exceptions et php4

Le
andre rodier
Bonjour,
je souhaiterais savoir si il est possible de rajouter des blocs try/catch
dans un fichier php sans que cela génère d'erreurs si celui-ci est parsé avec un interpréteur php4.

Un peu comme les directives #define du C :

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
thierry
Le #61284
bonjour

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?
oui


http://fr.php.net/manual/fr/function.define.php
http://fr.php.net/manual/fr/function.defined.php

Olivier Miakinen
Le #61282

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?
oui


http://fr.php.net/manual/fr/function.define.php
http://fr.php.net/manual/fr/function.defined.php


Euh... on peut redéfinir ainsi des mots-clés du langage ???

Même si cela était, comment définirais-tu TRY et CATCH pour que le code
suivant ne génère aucune erreur ?

TRY {
$error = 'Toujours lancer cette erreur';
throw new Exception($error);

// le code suivant une exception n'est pas exécuté.
echo 'Jamais exécuté';
}
CATCH (Exception $e) {
echo "Capture de l'exception : ", $e->getMessage(), "n";
}


thierry
Le #61280

Euh... on peut redéfinir ainsi des mots-clés du langage ???
Euh non effectivement, enfin pas à cette heure de la soirée en tout

cas.
Je pense que j'avais généralisée la question à "est ce que dans un même
script on peut avoir du code correspondant à plusieurs version de PHP ?"

Même si cela était, comment définirais-tu TRY et CATCH pour que le code
suivant ne génère aucune erreur ?
je ne redéfini pas un mot clé et réflexion faite, j'ai parlé bien vite,

mais je dicerne un début capillotracté de solution

A valider sur un PHP4, et si ça ne parse pas alors il suffit de mettre
des includes à la place de la définition du code.

<?php

//define('PHP_V5', 1);

if ( defined("PHP_V5") ) {
function throwNewException($error) {
throw new exception($error);
}

function tryCatch($f) {
try {
$f();
}
catch (Exception $e) {
echo "Capture de l'exception : ", $e->getMessage(), "n";
}
}

}
else {
function throwNewException($error) {
echo $error;
}

function tryCatch($f) {
$f();
}
}

function go() {
$error = 'Toujours lancer cette erreur';
throwNewException($error);
// le code suivant une exception n'est pas exécuté.
echo 'Jamais exécuté';
}

tryCatch("go");

?>


mea culpa, on est loin de la solution demandée

Jean-Marc Molina
Le #58751
andre rodier wrote:
je souhaiterais savoir si il est possible de rajouter des blocs
try/catch
dans un fichier php sans que cela génère d'erreurs si celui-ci est
parsé avec un interpréteur php4.

Un peu comme les directives #define du C :

#if ( PHP_VERSION >= 5 )
# define TRY try
#else
# define TRY
#endif

Ce genre de code a-t-il un équivalent en PHP ?


En C ce code est traité par le préprocesseur, il n'existe pas d'équivalent
en PHP. Se reposer sur les fonctions de gestion d'erreurs de PHP4 ou migrer
vers PHP5. Par contre j'ai rencontré un "framework" qui utilisait cette
syntaxe pour proposer deux versions du code source : "debug" et "release".
Question d'optimisation j'imagine mais je trouve la solution un peu trop
"hardcore" et sans doute inadaptée pour répondre à un problème.

Publicité
Poster une réponse
Anonyme