Выход из функции в Python

Вы можете передать значение 'totalItemCount' в конструктор CActiveDataProvider , который вы передали как null в своем текущем коде

Поставщик данных будет выполнять только запрос подсчета если его 'totalItemCount' равно null

Вы можете с удовольствием вычислить или извлечь из кеша результат подсчета самостоятельно, основываясь на критериях $searchForm->search(), и передать его в

в секунду опция заключается в том, чтобы создать собственное расширение CActiveDataProvider, переопределить calculateTotalItemCount() и предоставить опцию кэширования для результата подсчета, когда он в данный момент выполняет запрос count()

6
задан Ahmad 1 March 2014 в 06:18
поделиться

5 ответов

Если Вы ловите исключение и затем хотите повторно бросить его, этот шаблон довольно прост:

try:
    do_something_dangerous()
except:
    do_something_to_apologize()
    raise

Конечно, если Вы хотите повысить исключение во-первых, это легко, также:

def do_something_dangerous(self):
    raise Exception("Boo!")

Если это не то, что Вы хотели, предоставьте больше информации!

17
ответ дан 8 December 2019 в 03:28
поделиться

Само исключение завершит функцию:

def f():
    a = 1 / 0  # will raise an exception
    return a

try:
    f()
except:
    print 'no longer in f()'
4
ответ дан 8 December 2019 в 03:28
поделиться

Не может думать о другом способе "выйти" из функции кроме a) возврата, b) выдают исключение, или c) оконечного осуществления программы.

3
ответ дан 8 December 2019 в 03:28
поделиться

Принятие Вас хочет "остановить" выполнение в том методе. Существует несколько вещей, которые можно сделать.

  1. Не ловите исключение. Это возвратит управление методу, который назвал его во-первых. Можно затем сделать то, что Вы хотите с ним.
  2. sys.exit (0) Этот на самом деле выходит из всей программы.
  3. возвратитесь я знаю, что Вы сказали, что не хотите возврат, но выслушиваете меня. Возврат полезен, потому что на основе значения Вы возвращаетесь, это был бы хороший способ сообщить Вашим пользователям, что пошло не так, как надо.
2
ответ дан 8 December 2019 в 03:28
поделиться

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

Например, скажите, что я пишу функцию факториала. Факториал не определяется для отрицательных чисел, таким образом, я мог бы сделать это:

def factorial(n):
  if n < 0:
    raise ValueError
  if n == 0:
    return 1
  return n*factorial(n-1)

Я затем искал бы исключение:

n = raw_input('Enter a number.')
try:
  print factorial(n)
except ValueError:
  print 'You entered a negative number.'

Я могу сделать исключение более информативным, чем ValueError путем определения моего собственного:

class NegativeInputError(Exception):
  pass

# in the function:
if n < 0:
  raise NegativeInputError

HTH!

3
ответ дан 8 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

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