Smarty 3 en Exceptions
Smarty 3 lijkt een exception te throwen zodra er een fout ontstaat, zoals een niet-bestaande template oproepen.
Nu heb ik zelf een eigen standaard exceptionhandler gebouwd:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
set_exception_handler('error_handler');
function error_handler($e){
global $tpl;
include "inc/errors.inc.php";
$tpl->assign('title',"Error");
$tpl->assign('refferer',$_SERVER['HTTP_REFERER']);
if (array_key_exists($e->getMessage(), $errors)) {
$tpl->assign('error_key',$e->getMessage());
$tpl->assign('error',$errors[$e->getMessage()]);
} else {
$tpl->assign('error_key', "unexpected_error"); // how could we get the key from a var. ??
$tpl->assign('error',$errors['unexpected_error']);
}
$tpl->display('error.tpl');
}
?>
set_exception_handler('error_handler');
function error_handler($e){
global $tpl;
include "inc/errors.inc.php";
$tpl->assign('title',"Error");
$tpl->assign('refferer',$_SERVER['HTTP_REFERER']);
if (array_key_exists($e->getMessage(), $errors)) {
$tpl->assign('error_key',$e->getMessage());
$tpl->assign('error',$errors[$e->getMessage()]);
} else {
$tpl->assign('error_key', "unexpected_error"); // how could we get the key from a var. ??
$tpl->assign('error',$errors['unexpected_error']);
}
$tpl->display('error.tpl');
}
?>
En de manier hoe ik een error throw is als volgt:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
try {
if($a == $b) {
throw new Exception('traintype_not_exists');
}
} catch(Exception $e) {
error_handler($e);
}
?>
try {
if($a == $b) {
throw new Exception('traintype_not_exists');
}
} catch(Exception $e) {
error_handler($e);
}
?>
Nu was mijn vraag, kan ik Smarty ook laten weten om een andere exception-handler te gaan gebruiken?
Gewijzigd op 19/04/2011 17:45:38 door - Ariën -
Maar ik snap niet precies wat je wilt bereiken denk ik. Waarom gebruik je een catch-blok om vervolgens de standaard (de fallback!) exception handler aan te roepen die zou worden aangeroepen wanneer je de exception niet opving? En waarom heb je een aparte handler nodig voor smarty? Maw: welk probleem probeer je op te lossen?
Maar ja, Smarty throwed niet zulke errors, en ik zit te denken aan twee soorten handlers. Een normale en een SystemHandler, die extra dingen afhandeld bij system-kritieke fouten (zoals mailen).
Dus ik wil Smarty daarom dus een aparte eexception-handler geven. Enig idee of dat kan?
Toevoeging op 20/04/2011 16:58:43:
Schopje... :-)
Schop...
Schop?