在下面的代码中,每当发现异常时,我都想退出程序&在shell上打印异常
#stream.py
import hashlib
import sys
import os
import importlib
for line in sys.stdin.readlines():
try:
inpFile = "temp.py"
execfile(inpFile)
line1 = line.strip('\n').split('\t')
print "\t".join(line1)
except:
#exception expected "temp.py:File Not Found", how do I exit the code & print the exception on console ?
sys.exit(1)
以下是调用UDF的转换查询:
创建表newtable作为Select TRANSFORM(id,name)USING 'python stream.py'为mytable的(id,name);
赞赏的想法。
答案 0 :(得分:1)
如果您期望某个特定异常,那么您应该捕获它,而不是所有,这就是您正在做的事情。但是,您的代码中没有任何内容可以生成“找不到文件”!
编辑:问题代码已更改!我们真的希望陷入“一切”。我使用的是Exception
,它几乎可以捕获所有内容,请参阅https://docs.python.org/2/library/exceptions.html
这使用Python 2语法:
import sys
for line in sys.stdin.readlines():
try:
inpFile = "temp.py"
execfile(inpFile)
line1 = line.strip('\n').split('\t')
print "\t".join(line1)
except Exception as err:
print >> sys.stderr, err # print to stderr (python 2 syntax)
sys.exit(1)
答案 1 :(得分:1)
如果要捕获特定类型的异常(例如,检查IOError),可以使用
except IOError as e:
并使用e.strerror
如果要捕获所有异常,可以使用sys.exc_info()[0]
访问上一条错误消息
例如
try:
1/0
except:
print sys.exc_info()[0]
会打印
<type 'exceptions.ZeroDivisionError'>