it might be best if use a `try:...` suite whereever you perform io (and nowhere else) rather than just wrapping everything into a huge `try:` clause. it's going to be a huge pain to track down which of these is throwing the io error down the line. as a rule try (no pun intended) keeping `try:` clauses as small as possible so that disambiguating errors is easier. also no need to put *any* of the post io code in the `try:...` suite since if you're there there wasn't a raise