import pickle
import math
def handleSingleError():
outfile = open(r"./file/1.dat", "wb")
pickle.dump(123, outfile)
pickle.dump(45.6, outfile)
pickle.dump(True, outfile)
pickle.dump(["fuck", "shit", "welcome"], outfile)
outfile.close()
infile = open(r"./file/1.dat", "rb")
try:
print(pickle.load(infile))
print(pickle.load(infile))
print(pickle.load(infile))
print(pickle.load(infile))
print(pickle.load(infile))
print(pickle.load(infile))
print("请领取一百万")
except EOFError:
print("读你妹啊")
print("给我一百块")
infile.close()
def handleMoreError():
try:
print(5 / 0)
print(int("fuck off"))
mdict = {"name": "Python1701"}
print(mdict["age"])
except ZeroDivisionError:
print("分母不能为零菜逼")
except ValueError:
print("ValueError菜逼")
except KeyError:
print("KeyError菜逼")
except:
print("发生了未知异常菜逼")
else:
print("干掉不错小伙子")
finally:
print("劳资是无论如何都会执行的")
print("done")
def raiseError():
try:
radius = eval(input("请输入圆的半径:"))
if radius < 0:
raise RuntimeError("傻叉,圆的半径不能为负数")
area = math.pi * radius ** 2
print("圆的面积是%.2f" % (area))
except Exception as e:
print("发生了一个异常:", e)
print("done!")
class InvalidRadiusError(RuntimeError):
def __init__(self, radius):
super().__init__()
self.raius = radius
def __str__(self):
return "fuck,the radius %d is fucking invalid" % (self.raius)
'''
1、当用户输入非法半径时,
2、构造一个InvalidRadiusError的实例,将radius作为参数赋值给实例的self.raius:
raise InvalidRadiusError(radius)
3、这个实例会给try所捕获,所以e就是self
except InvalidRadiusError as e
4、从e中拿到self.raius,给用户以精确提示:
print("傻叉,%d是非法半径" % e.raius)
'''
def raiseCustomError():
try:
radius = eval(input("请输入圆的半径:"))
if radius < 0:
raise InvalidRadiusError(radius)
area = math.pi * radius ** 2
print("圆的面积是%.2f" % (area))
except InvalidRadiusError as e:
print(e)
print("傻叉,%d是非法半径" % e.raius)
print("done!")
if __name__ == '__main__':
raiseCustomError()
pass