Надлежащий код статуса для перенаправления страницы обслуживания?

Вот мое 'заключительное эмпирическое правило'.
я использую:

  • неконтролируемое исключение в коде моего метода для отказ из-за вызывающей стороны (который включает явная и подробная документация )
  • контролируемая исключительная ситуация для отказ из-за вызываемый , что я должен сделать явным любому желающему использовать мой код

, Выдерживает сравнение с предыдущим ответом, это - ясное объяснение (на который может согласиться или не согласиться) для использования одного или другого (или оба) вид исключений.

Для обоих из тех исключений, я создам свою собственную и контролируемую исключительную ситуацию непроверенную для моего приложения (хорошая практика, , как упомянуто здесь ), за исключением очень общего исключения непроверенного (как NullPointerException)

Так, например, цель этой конкретной функции ниже состоит в том, чтобы сделать (или добраться, если уже существуют), объект,
значение:

  • контейнер объекта делать/получать ДОЛЖЕН существовать (ответственность ВЫЗЫВАЮЩЕЙ СТОРОНЫ
    => неконтролируемое исключение И очистить комментарий Javadoc для этой вызванной функции)
  • , другие параметры не могут быть пустые
    (выбор кодера поместить это на ВЫЗЫВАЮЩУЮ СТОРОНУ: кодер не проверит на пустой параметр, но кодер ДЕЙСТВИТЕЛЬНО ДОКУМЕНТИРУЕТ IT)
  • CAN результата НЕ БЫТЬ ПУСТОЙ
    (ответственность и выбор кода вызываемого, выбор, который будет очень интересен для вызывающей стороны
    => контролируемая исключительная ситуация, потому что каждый вызывающие стороны ДОЛЖНЫ принять решение, если объект не может быть создан/найден, и то решение должно быть осуществлено во время компиляции: они не могут использовать эту функцию, не имея необходимость иметь дело с этой возможностью, означать с этим проверило исключение).

Пример:

/**
 * Build a folder. 
* Folder located under a Parent Folder (either RootFolder or an existing Folder) * @param aFolderName name of folder * @param aPVob project vob containing folder (MUST NOT BE NULL) * @param aParent parent folder containing folder * (MUST NOT BE NULL, MUST BE IN THE SAME PVOB than aPvob) * @param aComment comment for folder (MUST NOT BE NULL) * @return a new folder or an existing one * @throws CCException if any problems occurs during folder creation * @throws AssertionFailedException if aParent is not in the same PVob * @throws NullPointerException if aPVob or aParent or aComment is null */ static public Folder makeOrGetFolder(final String aFoldername, final Folder aParent, final IPVob aPVob, final Comment aComment) throws CCException { Folder aFolderRes = null; if (aPVob.equals(aParent.getPVob() == false) { // UNCHECKED EXCEPTION because the caller failed to live up // to the documented entry criteria for this function Assert.isLegal(false, "parent Folder must be in the same PVob than " + aPVob); } final String ctcmd = "mkfolder " + aComment.getCommentOption() + " -in " + getPNameFromRepoObject(aParent) + " " + aPVob.getFullName(aFolderName); final Status st = getCleartool().executeCmd(ctcmd); if (st.status || StringUtils.strictContains(st.message,"already exists.")) { aFolderRes = Folder.getFolder(aFolderName, aPVob); } else { // CHECKED EXCEPTION because the callee failed to respect his contract throw new CCException.Error("Unable to make/get folder '" + aFolderName + "'"); } return aFolderRes; }

16
задан Thody 9 November 2009 в 15:04
поделиться

2 ответа

Я бы тоже использовал 503 в сочетании с заголовком Retry-After. Настоящий робот должен знать, как с этим справиться.

21
ответ дан 30 November 2019 в 22:02
поделиться

302 Found , вероятно, будет классическим способом, а не постоянным перенаправлением. Однако вы хотите, чтобы это было временно, поэтому, когда паук вернется, он попробует это снова, но в этот раз он должен вернуться. 301 означает, что не нужно переходить к оригиналу.

500 серия - это ошибки, а не то, что вы хотите указать.

1
ответ дан 30 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: