feat: 新增技能扩展N5一章相关示例源码

This commit is contained in:
100gle
2022-11-10 09:48:19 +08:00
parent cb8a449048
commit 901f7c10d8
4 changed files with 684 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
class InvalidTypeError(Exception):
def __init__(self, value, code, detail, *args) -> None:
super().__init__(value, *args)
self.code = code
self.detail = detail
def __repr__(self) -> str:
return self.detail
def check(v, klass):
klass_names = [k.__name__ for k in klass]
if not isinstance(v, tuple(klass)):
raise InvalidTypeError(
f"{v.__class__.__name__} class is unknown, use {klass_names}.",
code=500,
detail={"value": v, "type": v.__class__.__name__},
)
return v
def add(a, b):
klass = [int, float]
try:
a = check(a, klass)
b = check(b, klass)
except InvalidTypeError as e:
error = {
"name": InvalidTypeError.__name__,
"code": e.code,
"detail": e.detail,
}
raise TypeError(error) from e
return a + b
def main():
try:
print(add(1, "2"))
except TypeError as e:
print(e.args)
if __name__ == '__main__':
main()