I agree this smells, I have no argument with that, I just hate try/except blocks. They're cowardly. What I mean is: morsel comes from a header so it's always going to be a native strings (str/bytes on python 2, str on python 3) so these should always be parseable. The bigger question is what could cause that parsing to raise an exception? None? If it's a None value we need a simple check: ``if expires:`` That's far more readable and avoids an antipattern of not doing something in an except block which is a pattern that should be avoided more than anything. 

Testing this out in the console implies that a malformed string could cause a `ValueError` and that `TypeError`. That said, this can already raise an uncaught ValueError which is fine. If the server is misbehaving we should make the user aware.

For what it's worth, the RFC defines the Expires header as a string with the format  we're assigning to `time_template` so checking if it is a string is unnecessary.