Personally, if you assume the attribute is either not defined or a list of strings, then you with that and if there’s an exception while handling it either swallow it or print a warning after the traceback or something. So "\n".join(exc.__notes__) would be acceptable and if it raises an exception, either swallow it, print the traceback saying, “there was an issue with the notes: {exc.notes!r}”, or something else like warnings.warn() if you want to make the warning “formal”.