2015-10-01 1 views
0

Скажем, у меня есть:Можно ли создать исключение из pdb? (Для отладки)

def fn1(): 
    # do some work 
    # in some cases raise exception 

def fn2(): 
    # do some work 
    try: 
     fn1() 
    except: 
     # do some work 

Я хочу проверить отрицательный путь, вызывая исключение изнутри PDB. Я пытался от fn1:

(Pdb) raise cliexceptions.NoConnectionError("Could not connect") 
*** NoConnectionError: 'Could not connect to SSR' 

Он печатает сбщ, но не выходит fn1. Есть ли способ сделать это?

+0

Я думаю, вы не можете. этот запрос слишком базар. Я думаю, вы можете упаковать код в свой блок и проверить его как функцию. – HuStmpHrrr

+0

Да, но не намного ли проще проверить pdb вместо того, чтобы обернуть каждый код в блок except и проверить как функцию? –

+0

теперь вы задаете вопрос. так как это может быть проще? почему отладчик в любом случае влияет на рабочий процесс программы? это чисто не цель дизайна отладчика, и поэтому естественно быть неподдерживаемым. – HuStmpHrrr

ответ

2

Вы можете вручную (частично) имитировать влияние исключения, перейдя к соответствующей строке в предложении except, и в случае, если вы также поймаете объект исключения (который в вашем случае нет), явно создайте Это.

# a.py 
[email protected] def fn2(): 
[email protected] # do some work 
[email protected] try: 
[email protected]  fn1() 
[email protected] except: 
[email protected]  print 'exception' 

(Pdb) b 4 
(Pdb) c 
> a.py(4)fn2() 
-> fn1() 
(Pdb) j 6 
> a.py(6)fn2() 
-> print 'exception' 
(Pdb) e = ValueError(5) 
(Pdb) <<the rest of your debugging here>> 
+1

Спасибо .. это полезно –

Смежные вопросы