Попробуйте catch в PHP, могу ли я пойти этим путем?

#php #try-catch

#php #попробуйте-catch

Вопрос:

Я пишу скрипт, который должен постоянно считывать содержимое с URL. Вместо …

 // block 1
Try{
    if(!someAction1){
        throw new exception(someException1);
    }
}catch(Exception $e){
    //exception handling code
}

// block 2
Try{
    if(!someAction2){
        throw new exception(someException2);
    }
}catch(Exception $e){
    //exception handling code
}

// block 3
Try{
    if(!someAction3){
        throw new exception(someException3);
    }
}catch(Exception $e){
    //exception handling code
}
  

Могу ли я перейти на это …

 Try{
    someFunction1()
}catch(Exception $e){
    //exception handling code
}

public someFunction1(){
    if(!someAction1){
        throw new Exception(someException1);
    }

    if(!someAction2){
        throw new Exception(someException2);
    }

    someFunction2()

}

public someFunction2(){
    if(!someAction3){
        throw new Exception(someException3);
    }
}
  

Причина, по которой я хочу это сделать, в том, что нужно создать много блоков try-catch. Но все они только для того, чтобы предотвратить остановку скрипта (я запускаю его с помощью Crontab). Код обработки исключений прост, запишите файл журнала ошибок (одинаковый для каждого блока try-catch)

Комментарии:

1. Почему бы не попробовать это самостоятельно, так вы лучше научитесь 😉

2. Если это синтаксически правильно, да, вы можете это сделать. Будьте осторожны, чтобы try / catch не приводил к фатальным ошибкам, тайм-аутам curl и превышению времени выполнения скрипта (как звучит вариант использования вашего вопроса).

3. @locrizak amp; @mario Я попробую сегодня ночью. К сожалению, этот скрипт выполняет поиск контента с сотен веб-сайтов, по множеству категорий на каждом. В прошлый раз он работал в течение 7 часов, прежде чем остановился (незавершенный), и я не знаю, почему, потому что в файле журнала нет ошибки. Возможно, это остановилось по другой причине (тайм-аут, проблема с MySQL, ограничение сервера бла-бла-бла)

4. Большая часть контента с сайтов в порядке. Но иногда я получаю неожиданную ошибку, например, содержимое содержит обратную косую черту, одинарную / двойную кавычку (которую я уже решил). Но на этот раз, если я изменю скрипт. Если я снова перейду к тестовому запуску после модификации кода. Мне приходится ждать, пока снова не произойдет непредвиденная ошибка. Из-за отсутствия ошибки блоку try-catch не придется выполнять свою работу, и я никогда не узнаю, подходит эта модификация или нет.

5. PHP не предназначен для запуска скриптов в течение 7 часов. Try / catch вам не поможет. Создайте workpool и повторно запускайте скрипт для обработки частей того, что он делает.

Ответ №1:

Да, вы можете это сделать.

Просто пойдите и попробуйте сами.

Комментарии:

1. Я разделил два предложения на две строки. Надеюсь, теперь у тебя все хорошо.

2. Попробуйте вместо этого удалить ссылку. Это не IRC или доска объявлений. Если вы не желаете давать ответ, соответствующий вопросу, независимо от того, насколько он прост, то почему бы вам просто не оставить его? — И снова: для этого есть функция комментариев.

3. @mario: Насколько я понял, вопрос, который задал Thaninrat, был: «Могу ли я изменить X на Y?». На мой взгляд, «Да» — приемлемый ответ на вопрос «да / нет».

4. Ну, тогда вы не поняли контекста вопроса. Это о другой теме. И ваш «ответ» не полезен для OP.