summaryrefslogtreecommitdiff
path: root/pyasn1/type/univ.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyasn1/type/univ.py')
-rw-r--r--pyasn1/type/univ.py27
1 files changed, 17 insertions, 10 deletions
diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py
index 7d88957..96623e7 100644
--- a/pyasn1/type/univ.py
+++ b/pyasn1/type/univ.py
@@ -825,9 +825,11 @@ class OctetString(base.AbstractSimpleAsn1Item):
elif isinstance(value, unicode):
try:
return value.encode(self.encoding)
- except (LookupError, UnicodeEncodeError) as e:
- raise error.PyAsn1StringEncodeError(
- "Can't encode string '%s' with codec %s" % (value, self.encoding), e
+ except (LookupError, UnicodeEncodeError):
+ exc = sys.exc_info()[1]
+ raise error.PyAsn1UnicodeEncodeError(
+ "Can't encode string '%s' with codec "
+ "%s" % (value, self.encoding), exc
)
elif isinstance(value, (tuple, list)):
try:
@@ -846,9 +848,11 @@ class OctetString(base.AbstractSimpleAsn1Item):
try:
return self._value.decode(self.encoding)
- except UnicodeDecodeError as e:
- raise error.PyAsn1StringDecodeError(
- "Can't decode string '%s' with codec %s" % (self._value, self.encoding), e
+ except UnicodeDecodeError:
+ exc = sys.exc_info()[1]
+ raise error.PyAsn1UnicodeDecodeError(
+ "Can't decode string '%s' with codec "
+ "%s" % (self._value, self.encoding), exc
)
def asOctets(self):
@@ -865,7 +869,7 @@ class OctetString(base.AbstractSimpleAsn1Item):
try:
return value.encode(self.encoding)
except UnicodeEncodeError as e:
- raise error.PyAsn1StringEncodeError(
+ raise error.PyAsn1UnicodeEncodeError(
"Can't encode string '%s' with '%s' codec" % (value, self.encoding), e
)
elif isinstance(value, OctetString): # a shortcut, bytes() would work the same way
@@ -881,9 +885,12 @@ class OctetString(base.AbstractSimpleAsn1Item):
try:
return self._value.decode(self.encoding)
- except UnicodeDecodeError as e:
- raise error.PyAsn1StringDecodeError(
- "Can't decode string '%s' with '%s' codec at '%s'" % (self._value, self.encoding, self.__class__.__name__), e
+ except UnicodeDecodeError:
+ exc = sys.exc_info()[1]
+ raise error.PyAsn1UnicodeDecodeError(
+ "Can't decode string '%s' with '%s' codec at "
+ "'%s'" % (self._value, self.encoding,
+ self.__class__.__name__), exc
)
def __bytes__(self):