]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Nicer exception stack traces, again
authorHenryk Plötz <henryk@ploetzli.ch>
Thu, 9 Aug 2018 17:21:13 +0000 (19:21 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Mon, 3 Dec 2018 18:34:17 +0000 (19:34 +0100)
fints/parser.py

index 11f864c7fbc4698dd216ec54cf80de8517f57b46..81ef477ec744b32ff5b639e6a1067c53d7cb22aa 100644 (file)
@@ -139,11 +139,14 @@ class FinTS3Parser:
                         raise ValueError("Required field {}.{} was not present".format(seg.__class__.__name__, name))
                     break
 
-                if not constructed:
-                    setattr(seg, name, val)
-                else:
-                    deg = self.parse_deg_noniter(field.type, val, field.required)
-                    setattr(seg, name, deg)
+                try:
+                    if not constructed:
+                        setattr(seg, name, val)
+                    else:
+                        deg = self.parse_deg_noniter(field.type, val, field.required)
+                        setattr(seg, name, deg)
+                except ValueError as e:
+                    raise ValueError("Wrong input when setting {}.{}".format(seg.__class__.__name__, name)) from e
             else:
                 i = 0
                 while True:
@@ -152,11 +155,14 @@ class FinTS3Parser:
                     except StopIteration:
                         break
 
-                    if not constructed:
-                        getattr(seg, name)[i] = val
-                    else:
-                        deg = self.parse_deg_noniter(field.type, val, field.required)
-                        getattr(seg, name)[i] = deg
+                    try:
+                        if not constructed:
+                            getattr(seg, name)[i] = val
+                        else:
+                            deg = self.parse_deg_noniter(field.type, val, field.required)
+                            getattr(seg, name)[i] = deg
+                    except ValueError as e:
+                        raise ValueError("Wrong input when setting {}.{}".format(seg.__class__.__name__, name)) from e
 
                     i = i + 1