Страницы: 1
RSS
Обработка ошибки в PQ и вывод кода ошибки в результат
 
Всем привет! Несколько вопросов, может мне кто-то объяснить как работает синтаксис try в PQ, не пойму либо я тупой либо одно из двух.

Пара вопросов:
1) Если я пишу
let
  S = try Web.Conte("https://www.planetaexcel.ru/forum/" otherwise "ОШИБКА"
In
  S

PQ должен вывести мне значение "ОШИБКА", потому что в S неправильно прописана функция, но ничего не выводит, а именно выскакивает ошибка, т.е. PQ нифига ее не обрабатывает. Я что-то не так делаю?
2) Есть ли функция вывода кода/значения ошибки? Ну т.е. если я использую какую-то функцию и она возвращает мне ошибку, что она обработала ее и вывела мне например код ошибки.
Изменено: dodge - 10.02.2020 12:59:48
 
Цитата
dodge написал:
PQ должен вывести мне значение "ОШИБКА",
нет, не должен - он выведет "ОШИБКА", если при вычислении выражения будет ошибка, а в данном случае у вас само выражение записано некорректно - скобок нет, In - с заглавной; поэтому редактор ругнётся на синтаксис, а потом заявит, что не распознано имя Web.Conte
Соблюдение правил форума не освобождает от модераторского произвола
 
Ок тогда вот такой пример:
Код
let
   S = try Web.Contents("123") otherwise "ОШИБКА"
in
  S

Синтаксис правильный, но очевидно что по адресу 123 функция ничего не получит. На выходе я должен получить S = "ОШИБКА" правильно?

Вот у меня PQ на такой код ругается:
DataSource.Error: Web.Contents не удалось получить содержимое из "http://0.0.0.123/"; (503): Service Unavailable
Сведения:
   DataSourceKind=Web
   DataSourcePath=http://0.0.0.123/
   Url=http://0.0.0.123/

А должен вроде как обработать и вывести мне результат S = "ОШИБКА", а еще лучше, что-то вроде S = "Ошибка, DataSource.Error: Web.Contents"
Изменено: dodge - 10.02.2020 13:09:51
 
В чем проблема проверить то?

Вы чего, собственно хотите? Обрабатывать ответы типа 404 страница не найдена? В чем конкретно задача?
Цитата
dodge написал:
А должен вроде
Где написано, что он вам в этом случае что-то должен?
Изменено: PooHkrd - 10.02.2020 13:09:09
Вот горшок пустой, он предмет простой...
 
Спрошу проще. Есть ли в PQ аналог ЕСЛИОШИБКА. Так, чтобы какая-то функция, если завершается с ошибкой не прерывала весь запрос, а например выводила какой-то другой результат. В ИДЕАЛЕ - выводила бы код этой ошибки.
 
dodge, есть, и это try ... otherwise. Другой вопрос что эта конструкция считает ошибкой, а что нет  ;)
Вот горшок пустой, он предмет простой...
 
Ну тогда логичный вопрос, а что эта конструкция считает ошибкой?) И нет ли еще какого аналога, который бы ЛЮБУЮ ошибку обрабатывал (ну хотя бы при правильном синтаксисе).
Изменено: dodge - 10.02.2020 13:13:51
 
dodge, напрямую не работает так. Но вот так работает:
Код
= try Web.Page(Web.Contents("123")) otherwise "Ошибка"
F1 творит чудеса
 
По поводу отлова конкретных ошибок сервера почитайте вот эту статью:
https://blog.crossjoin.co.uk/2016/08/09/handling-404-not-found-errors-with-web-contents-in-power-query-and-power-bi/
F1 творит чудеса
 
Максим, как всегда спасибо за линк на отличный пост Криса нашего Вебба. Как-то я упустил этот материал.
Вот горшок пустой, он предмет простой...
 
Максим Зеленский, спасибки, это кажется именно то, что нужно.
Изменено: dodge - 10.02.2020 14:14:16
Страницы: 1
Наверх