2
      except ValueError:
        print "the input is Invaild(dd.mm.year)"
    except as e:
        print "Unknown error"
        print e

这是我写的代码,如果出现不同的错误,那么 valueerror 会发生,它会打印在 e 中吗?谢谢

4

2 回答 2

12

您需要在此处捕获BaseExceptionorobject才能分配给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,SystemExitGeneratorExit。不抓住这些通常是一个好主意。

有关详细信息,请参阅异常文档

于 2013-10-29T18:26:21.093 回答
1

不,该代码将抛出SyntaxError

如果你不知道你的代码可能抛出的异常,你可以只捕获Exception. 这样做会得到所有内置的、非系统退出的异常:

except ValueError:
    print "the input is Invaild(dd.mm.year)"
except Exception as e:
    print "Unknown error"
    print e
于 2013-10-29T18:23:59.923 回答