mirror of
https://github.com/tanrax/RSSingle.git
synced 2024-11-22 00:05:42 +01:00
Improve Exception handling, and catch explicit Exceptions
This commit improves Exception handling, and made some changes to try/catch blocks, where the `KeyError` is now explicitly caught. If in the future, we have reports of other Exceptions being caught, we can include those in the handling. For now, I've used BaseException for two try/catch blocks. I need to check what exceptions can happen there. Signed-off-by: Dom Rodriguez <shymega@shymega.org.uk>
This commit is contained in:
parent
1460f92f02
commit
df52406dfe
25
rssingle.py
25
rssingle.py
@ -70,9 +70,8 @@ def init_feed() -> None:
|
||||
fg.link(href=get_url_from_feed(CONFIG), rel="self")
|
||||
fg.subtitle(CONFIG["description"])
|
||||
fg.language("en")
|
||||
except:
|
||||
log.error("Error initialising the feed!")
|
||||
sys.exit(1)
|
||||
except BaseException: # find out what exceptions FeedGenerator can cause as well as KeyError.
|
||||
logging.exception("Error initialising the feed!")
|
||||
|
||||
log.debug("Feed initialised!")
|
||||
|
||||
@ -85,7 +84,7 @@ def parse_rss_feed(url) -> feedparser.FeedParserDict:
|
||||
try:
|
||||
# Hopefully this should parse..
|
||||
return feedparser.parse(url)
|
||||
except Exception:
|
||||
except BaseException: # find out what exceptions .parse() call can cause.
|
||||
log.warning("Failed to parse RSS feed.")
|
||||
# Now, we could handle gracefully.
|
||||
|
||||
@ -108,21 +107,21 @@ def main():
|
||||
|
||||
try:
|
||||
fe.id(entry["id"])
|
||||
except:
|
||||
# Deifnitely weird...
|
||||
except KeyError:
|
||||
# Definitely weird...
|
||||
log.warning("Empty id attribute, defaulting..")
|
||||
fe.id("about:blank")
|
||||
|
||||
try:
|
||||
fe.title(entry["title"])
|
||||
except:
|
||||
except KeyError:
|
||||
# OK, this is a definite malformed feed!
|
||||
log.warning("Empty title attribute, defaulting..")
|
||||
fe.title("Unspecified")
|
||||
|
||||
try:
|
||||
fe.link(href=entry["link"])
|
||||
except:
|
||||
except KeyError:
|
||||
# When we have a empty link attribute, this isn't ideal
|
||||
# to set a default value.. :/
|
||||
log.warning("Empty link attribute, defaulting..")
|
||||
@ -136,12 +135,12 @@ def main():
|
||||
try:
|
||||
for author in entry["authors"]:
|
||||
fe.author(author)
|
||||
except:
|
||||
except KeyError:
|
||||
log.debug("Oh dear, a malformed feed! Adjusting.")
|
||||
# This is a ugly hack to fix broken feed entries with the author attribute!
|
||||
author["email"] = author.pop("href")
|
||||
fe.author(author)
|
||||
except:
|
||||
except KeyError:
|
||||
# Sometimes we don't have ANY author attributes, so we
|
||||
# have to set a dummy attribute.
|
||||
log.warning("Empty authors attribute, defaulting..")
|
||||
@ -155,7 +154,7 @@ def main():
|
||||
fe.description(entry["description"])
|
||||
fe.summary(entry["description"])
|
||||
fe.content(entry["description"])
|
||||
except:
|
||||
except KeyError:
|
||||
# Sometimes feeds don't provide a summary OR description, so we
|
||||
# have to set an empty value.
|
||||
# This is pretty useless for a feed, so hopefully we
|
||||
@ -169,11 +168,11 @@ def main():
|
||||
try:
|
||||
fe.published(entry["published"])
|
||||
fe.updated(entry["published"])
|
||||
except:
|
||||
except KeyError:
|
||||
fe.published("1970-01/01T00:00:00+00:00")
|
||||
fe.updated("1970-01/01T00:00:00+00:00")
|
||||
continue
|
||||
except:
|
||||
except KeyError:
|
||||
# Sometimes feeds don't even provide a publish date, so we default to
|
||||
# the start date &time of the Unix epoch.
|
||||
log.warning("Empty publish attribute, defaulting..")
|
||||
|
Loading…
Reference in New Issue
Block a user