SyntaxError はキャッチできない唯一のエラーであることがわかりました。例えば:
if __name__ == "__main__":
print "main running"
try:
for i in range(3):
except SyntaxError,e:
print "error caught"
finally:
print "i am here"
まあ、print "main running" が表示されると思いますが、そうならないので、python は実行前にすべての構文をチェックしますか?