php, как управлять исключением исключения в нескольких вложенных функциях?

Я начинаю учиться использовать исключения в 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.

1

Решение

Обычно исключение будет выбрасываться до самого высокого уровня в цепочке или когда вы поймаете его на любом уровне.

в вашем случае, если вы хотите поймать исключение в 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
}
}
1

Другие решения

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;
}
...
}
1

По вопросам рекламы [email protected]