正文共:1222 字 5 图 预计阅读时间:4 分钟
If you fear failure, you will never go anywhere.
如果你害怕失败,你将无法到达任何地方。
小闫语录:
一件事情的难与易,除了事情本身涉及知识复杂与否外,最大程度取决于对待它的态度。如果心生胆怯,必定失败。
为了填上篇文章的坑,我们来实现一个二进制消息协议的小案例。这个案例要实现的是一个RPC的服务接口定义,这个RPC调用可以完成除法的操作。
首先我们看一下本地调用,这个大家都明白,所以直接上代码。
1.写一个除法的函数:
def divide(num1,num2):
"""
除法
:param num1: int
:param num2: int
:return: float
"""
val = num1 / num2
return val
2.在进行除法运算的时候,有可能会有异常情况,所以我们将异常定义一下。
考虑到num2可能为0的情况,我们此处自己定义异常。
class InvalidOpreation(Exception):
def __init__(self, message=None):
self.message = message or 'invalid operation'
整体代码实现:
class InvalidOpreation(Exception):
def __init__(self, message=None):
# 异常信息如果有指定则按指定输出,没有的话则输出`invalid operation`
self.message = message or 'invalid operation'
def divide(num1, num2=1):
"""
除法
:param num1: int
:param num2: int
:return: float
"""
# 增加判断操作,抛出自定义异常
if num2 == 0:
raise InvalidOpreation()
val = num1 / num2
return val
try:
a = divide(200,0)
except InvalidOpreation as e:
print(e.message)
else:
print(a)
divide消息协议:divide方法中,第一个参数为int类型num1,第二个参数为int类型num2,以一种伪代码的形式描述一下:
float <= divide(1: int num1, 2: int num2=1) => InvalidOpreation
# 执行成功为左边float类型,执行失败为右边InvalidOpreation
注意:此代码只作为说明。
优质文章推荐: