Properly re-raise exception to save original tracebacks
We usually mutate some exceptions to OfflineImapError() and it is a whole lot better if such exception will show up with the original traceback, so all valid occurrences of such mutations were transformed to the 3-tuple form of "raise". Had also added coding guidelines document where this re-raise strategy is documented. Signed-off-by: Eygene Ryabinkin <rea@codelabs.ru>
This commit is contained in:
@ -103,7 +103,8 @@ class IMAPRepository(BaseRepository):
|
||||
except Exception as e:
|
||||
raise OfflineImapError("remotehosteval option for repository "\
|
||||
"'%s' failed:\n%s" % (self, e),
|
||||
OfflineImapError.ERROR.REPO)
|
||||
OfflineImapError.ERROR.REPO), \
|
||||
None, exc_info()[2]
|
||||
if host:
|
||||
self._host = host
|
||||
return self._host
|
||||
|
@ -15,6 +15,8 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
from sys import exc_info
|
||||
|
||||
try:
|
||||
from configparser import NoSectionError
|
||||
except ImportError: #python2
|
||||
@ -66,14 +68,16 @@ class Repository(object):
|
||||
except NoSectionError as e:
|
||||
errstr = ("Could not find section '%s' in configuration. Required "
|
||||
"for account '%s'." % ('Repository %s' % name, account))
|
||||
raise OfflineImapError(errstr, OfflineImapError.ERROR.REPO)
|
||||
raise OfflineImapError(errstr, OfflineImapError.ERROR.REPO), \
|
||||
None, exc_info()[2]
|
||||
|
||||
try:
|
||||
repo = typemap[repostype]
|
||||
except KeyError:
|
||||
errstr = "'%s' repository not supported for '%s' repositories." \
|
||||
% (repostype, reqtype)
|
||||
raise OfflineImapError(errstr, OfflineImapError.ERROR.REPO)
|
||||
raise OfflineImapError(errstr, OfflineImapError.ERROR.REPO), \
|
||||
None, exc_info()[2]
|
||||
|
||||
return repo(name, account)
|
||||
|
||||
|
Reference in New Issue
Block a user