Как я могу настроить свой код для добавления настраиваемого сообщения об ошибке, если assert неверен? [Дубликат]

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

if (!name) {
  name = async1();
}
async2(name);

. В итоге вы пройдете через async1; проверьте, не определено ли name или нет, и соответственно вызовите обратный вызов.

async1(name, callback) {
  if (name)
    callback(name)
  else {
    doSomething(callback)
  }
}

async1(name, async2)

Хотя в в порядке хорошо , это раздражает, когда у вас много подобных случаев и обработка ошибок.

Fibers помогает в решении проблемы.

var Fiber = require('fibers')

function async1(container) {
  var current = Fiber.current
  var result
  doSomething(function(name) {
    result = name
    fiber.run()
  })
  Fiber.yield()
  return result
}

Fiber(function() {
  var name
  if (!name) {
    name = async1()
  }
  async2(name)
  // Make any number of async calls from here
}

Вы можете проверить проект здесь .

660
задан APerson 3 December 2014 в 04:13
поделиться

17 ответов

693
ответ дан slezica 25 August 2018 в 05:35
поделиться
0
ответ дан Cleb 25 August 2018 в 05:35
поделиться

Утверждение имеет две формы:

Простая форма assert <expression> эквивалентна

if __​debug__:
    if not <expression>: raise AssertionError

. Расширенная форма assert <expression1>, <expression2> эквивалентна

if __​debug__:
    if not <expression1>: raise AssertionError, <expression2>
15
ответ дан Colin D Bennett 25 August 2018 в 05:35
поделиться
24
ответ дан dbader 25 August 2018 в 05:35
поделиться
-2
ответ дан Dinesh Pundkar 25 August 2018 в 05:35
поделиться
6
ответ дан Gaurav Agarwal 25 August 2018 в 05:35
поделиться
11
ответ дан gruszczy 25 August 2018 в 05:35
поделиться
13
ответ дан Jacob Abraham 25 August 2018 в 05:35
поделиться
309
ответ дан kmario23 25 August 2018 в 05:35
поделиться
102
ответ дан Neil Vass 25 August 2018 в 05:35
поделиться
1
ответ дан Nitish Chauhan 25 August 2018 в 05:35
поделиться
43
ответ дан pyrrhic 25 August 2018 в 05:35
поделиться
-2
ответ дан rianhariadi.com 25 August 2018 в 05:35
поделиться
4
ответ дан Shawn Mehan 25 August 2018 в 05:35
поделиться
-1
ответ дан user3423267 25 August 2018 в 05:35
поделиться
2
ответ дан ytpillai 25 August 2018 в 05:35
поделиться

Мое короткое объяснение:

  • assert повышает AssertionError, если выражение ложно, иначе просто продолжает код, и если есть запятая, то это будет AssertionError: whatever after comma , и код выглядит так: raise AssertionError(whatever after comma)

Связанный учебник об этом:

https://www.tutorialspoint.com/ python / assertions_in_python.htm

0
ответ дан U9-Forward 8 October 2018 в 23:04
поделиться
  • 1
    Ответ предусматривает , как использовать assert, но не , когда использовать (или не использовать) assert; также отмечая, что assert можно отключить, если __debug__ является False полезным. – FluxIX 27 September 2018 в 03:23
Другие вопросы по тегам:

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