Зафиксируйте только некоторые ошибки периода выполнения в Python

Если вы отметите Документы MDN :

метод HTTP-метод, который браузер использует для отправки формы. Возможные значения:

post : Соответствует методу HTTP POST; Данные формы включаются в тело формы и отправляются на сервер.

get : соответствует методу HTTP GET; данные формы добавляются к URI атрибута действия с символом «?» в качестве разделителя, и в результате.

blockquote>

Если вы хотите отправить удаление, прослушайте событие submit в форме, позвоните event.preventDefault(), чтобы остановить действие по умолчанию, и сделайте свой собственный запрос к бэкэнду, что более типично. «современный» способ сделать это в любом случае, так как это не приводит к обновлению страницы.

Также ваш маршрут не будет поврежден без чего-либо в части :id.

Один из способов сделать это заключается в следующем:

Дайте вашей форме класс или найдите способ ссылаться на него


В вашем JavaScript, найти способ ссылки на форму и запретить ее отправку:

const form = document.getElementById('test-form');
form.addEventListener('submit', async event => {
    event.preventDefault();     // This prevents the form from submitting using POST

    const idInput = form.querySelector('input[name="id"]');
    const id = idInput.value;

    const res = await fetch(`https://apiurl.com/api/${id}`, {
      method: 'DELETE',
    });
    const json = await res.json();

    console.log(json);
});

6
задан lfaraone 5 May 2009 в 17:01
поделиться

5 ответов

Я знаю, что я могу просто проверить наличие корневого доступа перед импортом, но я хотел бы знать, как отловить этот особый вид ошибки с помощью оператора try / исключением для будущего ссылка. Есть ли какой-либо способ провести различие между этой RuntimeError и другими, которые могут быть вызваны?

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

Я согласен с вышеизложенным - сопоставление текста по ошибке является ужасающей перспективой.

Есть ли какой-либо способ провести различие между этой RuntimeError и другими, которые могут быть вызваны?

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

Я согласен с вышеизложенным - сопоставление текста по ошибке является ужасающей перспективой.

Есть ли какой-либо способ провести различие между этой RuntimeError и другими, которые могут быть вызваны?

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

Я согласен с вышеизложенным - сопоставление текста по ошибке является ужасающей перспективой.

7
ответ дан 8 December 2019 в 05:57
поделиться

Вы можете проверить атрибуты исключения, чтобы отличать их от других возможных RuntimeError исключений. Например, повторно вызовите ошибку, если она не соответствует предопределенному тексту сообщения.

    try:
        import pypatred
    except RuntimeError,e:
        if e.message == 'RuntimeError: pyparted requires root access':
            return 'pyparted - no root access'
        raise

Конечно, прямое сравнение текста - это только пример, вы можете искать включенные подстроки или регулярные выражения.

Стоит отметить, что атрибут исключений .message является устаревшим, начиная с Python 2.6 . Вы можете найти текст в .args , обычно args [0] .

... Для версии 2.6 атрибут message устарел в пользу атрибута args .

9
ответ дан 8 December 2019 в 05:57
поделиться
try:
    import pyparted
except RuntimeError:
    print('RuntimeError is raised')
    raise

подробнее о обработке исключений в учебнике .

Эта ситуация должна привести к ImportError , по моему мнению. И вы можете сделать это сами:

try:
    import pyparted
except RuntimeError as e:
    raise ImportError(e)
4
ответ дан 8 December 2019 в 05:57
поделиться
try:
   import ...
except RuntimeError:
   # Do something
1
ответ дан 8 December 2019 в 05:57
поделиться

Да.

   try:
        import module
   except RuntimeError:
         pass

Импорт интерпретируется как любое другое утверждение, оно не является специальным. Вы можете сделать

if condition:
     import module
1
ответ дан 8 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

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