0

在 python 中有没有一种方法,如果我创建一个 .py 文件,然后将导入一个不同的 .py 文件,该文件具有所有可能的异常的 catch 子句,以这种方式

假设我们有一个 .py 文件让我们说 test1

测试1.py:

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

现在我们有了 test2.py ,它有一个 try 块,除了所有可能的异常。所以我需要的是我希望 test1.py 的内容进入trytest2.py 。有没有办法或者调用或导入我可以实现这一点?

测试2.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

怎么样:

测试2.py:

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

如果在 import 时引发异常test1,则try...excepttest2中将有机会处理它。


或者,您可以将代码放在函数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 回答