Я начинаю учиться использовать исключения в php. В подфункции в моем коде я хочу использовать оператор throw для остановки основной функции, если появляется одна ошибка.
У меня есть три функции:
function main_buildt_html(){
...
check_if_parameters_are_ok();
// if the subfunction_check exception is threw, don't execute the process below and go to an error page
...
}
function check_if_parameters_are_ok(){
...
try{
...
subfunction_check();
...
}catch(Exception $e){
}
...
}
function subfunction_check(){
...
if ($some_error) throw new Exception("Its not ok ! stop the process and redirect the user to an error page");
...
}
Из моей основной функции main_buildt_html, как я могу ‘правильно’ определить, было ли выброшено исключение?
Я хочу обнаружить исключение «подфункция» из основной функции для остановки стандартного процесса и перенаправить пользователя на страницу ошибки html.
Обычно исключение будет выбрасываться до самого высокого уровня в цепочке или когда вы поймаете его на любом уровне.
в вашем случае, если вы хотите поймать исключение в check_if_parameters_are_ok () а также main_buildt_html () функции, вы должны выбросить исключение в check_if_parameters_are_ok () функция.
function check_if_parameters_are_ok(){
...
try{
...
subfunction_check();
...
}catch(Exception $e){
//handle exception.
throw $e; // throw the excption again
}
}
Теперь вам нужно поймать исключение в main_buildt_html () функция.
function main_buildt_html(){
try {
check_if_parameters_are_ok();
} catch (Exception $e) {
// handle the excption
}
}
check_if_parameters_are_ok()
должен вернуться false
когда ловит ошибку. Основная функция должна проверить значение.
function main_buildt_html(){
...
if (check_if_parameters_are_ok()) {
...
} else {
...
}
}
function check_if_parameters_are_ok(){
...
try{
...
subfunction_check();
...
}catch(Exception $e){
return false;
}
...
}