-1
if not(my_value < max_limit): 
    print "value of is %g and hence invalid. It can be upto $g" % (my_value, max_limit) 
    raise LimitFailureCheck("Failed due to Incorrect value") 

Я определил свое обычное исключение как LimitFailureCheck в другом модуле. Я хочу поднять его, когда my_value> max_limt. Следовательно, я закодирован, как вышеупомянутый метод. Он работает правильно. Я хочу спросить, чтобы дать пользователю больше информации. Я также написал инструкцию печати, в которой указывается, что именно проблема. Могу ли я сделать то же самое, поднимая мое обычное исключение? Я попробовалВставка при поднятии пользовательских исключений

raise LimitFailureCheck("Failed due to Incorrect %g value" % my_value) 

Но он поднял ту же инструкцию при печати вывода.

поднять LimitFailureCheck ("Не удалось из-за неправильного% значения г" % my_value)

Я надеялся получить

raise LimitFailureCheck("Failed due to Incorrect 99 value") 

выход я получил:


Traceback (most recent call last): 
    File "runtest.py", line 69, in attempt 
    func() 
    File "c:\Users\pran\projects\check.py", line 66, in runmytest 
    raise LimitFailureCheck('"Failed due to Incorrect %g value" % my_value 
) 
LimitFailureCheck 
+3

Вы уверены, что не печатать сообщения с подменой? Он отобразит 'raise' как последнюю строку трассировки, но затем он также должен распечатать сообщение об исключении. – BrenBarn

+1

Это не имеет никакого смысла. Стандартные операторы форматирования строк (либо '%', либо '.format') должны работать в любом контексте, включая создание исключения. Я подозреваю, что вы смотрите на неправильную часть вывода, как предлагает @BrenBarn. –

+0

Этот вопрос кажется не по теме, потому что проблема не настоящая. – Veedrac

ответ

-1

Вы может захотеть попробовать формат.

raise LimitFailureCheck('Failed due to Incorrect {0} value'.format(my_value) 
+0

Это еще один способ форматирования строк, но он не решает вопрос о том, почему форматированная строка не печаталась. – tdelaney

+0

@tdelaney Как я читал это, он печатал, он просто не форматировался, он печатал% g вместо значения формата. format() более согласован, но, возможно, я неправильно истолковал этот вопрос. –

+0

О, я понял! Мы оба ошибаемся. OP жалуется, потому что трассировка python показывает строку, где произошел сбой, а не форматированное сообщение. btw - я не был downvoter, поэтому не могу это исправить. – tdelaney

0

при запуске питона в командной строке и питон выходах из-за необработанное исключение, питон покажет отслеживающий и строку исключений.

Когда я запускаю эту программу испытаний

class LimitFailureCheck(Exception): 
    pass 

raise LimitFailureCheck('i am %s' % 'sad') 

Python говорит

Traceback (most recent call last): 
    File "sad.py", line 4, in <module> 
    raise LimitFailureCheck('i am %s' % 'sad') 
__main__.LimitFailureCheck: i am sad 

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

class LimitFailureCheck(Exception): 
    pass 

try: 
    raise LimitFailureCheck('i am %s' % 'sad') 
except LimitFailureCheck, e: 
    print 'raise LimitFailureCheck("%s")' % e 

, который отображает

raise LimitFailureCheck("i am sad")