except ValueError:
print "the input is Invaild(dd.mm.year)"
except as e:
print "Unknown error"
print e
这是我写的代码,如果错误不同然后会发生valueerror,它会在e中打印吗? 感谢
答案 0 :(得分:6)
您需要抓住BaseException
或object
此处才能分配给e
:
except ValueError:
print "the input is Invaild(dd.mm.year)"
except BaseException as e:
print "Unknown error"
print e
或者,更好的是Exception
:
except ValueError:
print "the input is Invaild(dd.mm.year)"
except Exception as e:
print "Unknown error"
print e
一揽子except:
将抓住与BaseException
相同的例外情况,仅抓住Exception
将忽略 KeyboardInterrupt
,SystemExit
,和GeneratorExit
。没有抓住这些,通常是一个好主意。
有关详细信息,请参阅exceptions documentation。
答案 1 :(得分:1)
不,该代码会抛出SyntaxError
:
如果您不知道代码可能引发的异常,则只能捕获Exception
。这样做将获得所有内置的,非系统退出的例外:
except ValueError:
print "the input is Invaild(dd.mm.year)"
except Exception as e:
print "Unknown error"
print e