0

Pythonで.pyファイルを作成してから、考えられるすべての例外のcatch句を持つ別の.pyファイルにインポートする方法はありますか?

.py ファイルがあるとします。たとえば、test1 とします。

test1.py:

import xyz          
x=5;
print x;
func1()

これで test2.py ができました。これには try ブロックがあり、発生する可能性のあるすべての例外を除きます。だから私が必要とするのは、 test1.py の内容を test2.py の中に入れたいということtryです。

test2.py

import traceback
import sys
import linecache
# import your file here

try:
    import first

    # invoke your files main method here and run the module
    # it is normal behavior to expect an indentation error if your file and method have not been invoked correctly


except SyntaxError as e:
        exc_type, exc_value, exc_traceback = sys.exc_info()
        #print(sys.exc_info())
        formatted_lines = traceback.format_exc().splitlines()
        #print(formatted_lines)
        temp=formatted_lines[len(formatted_lines) - 3].split(',')
        line_no = str(formatted_lines[len(formatted_lines) - 3]).strip('[]')
        line=line_no.strip(',')
        #print(line[1])

        print " The error method thrown by the stacktrace is  " "'" ,e , "'"
        print " ********************************************* Normal Stacktrace*******************************************************************"
        print(traceback.format_exc())
4

2 に答える 2

2

どうですか:

test2.py:

try:
    import test1
except ...:
    ...

インポート中に例外が発生した場合test1try...exceptブロックはtest2それに対処する機会があります。


または、コードを関数test1.py内に配置することもできます。main

def main():    
    import xyz          
    x=5;
    print x;
    func1()

test2.py次のようになります。

import test1

try:
    import first
    # invoke your files main method here and run the module
    test1.main()
except SyntaxError as e:
于 2012-11-12T19:46:55.387 に答える
0

デコレータをチェックすることをお勧めします。Pythonデコレータについては、ここにかなり詳細な説明があります。

#TEST1.py
from exception_catcher import exception_catcher
@exception_catcher
def testfun1(a,b,c):
    d = a+b+c
    return d

print testfun1('c','a','t')
print testfun1('c',5,'t')

デコレータクラス

#exception_catcher.py
class exception_catcher(object):
def __init__(self,f):
    self.fun = f

def __call__(self,*args,**kwargs):
    try:
        return self.fun(*args,**kwargs)
    except:
        return "THERE WAS AN EXCEPTION"

コマンドライン

>> python TEST1.py
cat
THERE WAS AN EXCEPTION

お役に立てば幸いです。

于 2012-11-12T22:37:01.760 に答える