基于网络课程《Python全栈开发专题》 记录笔记,请支持正版课程。
raise抛出异常
# raise Exception('我是一个异常')
# raise ArithmeticError('这是一个和数值有关的异常')
# from boto.codedeploy.exceptions import InvalidRoleException
# raise InvalidRoleException(2, '异常信息')
'''
一些常见的异常:
Exception 所有异常类的基类
AttributeError 属性引用或赋值失败时抛出的异常
OSError 当操作系统无法执行任务时抛出的异常
KeyError 在使用序列中不存在的键值时抛出的异常
IndexError 在使用序列中不存在的索引时抛出的异常
NameError 在找不到名字(变量)时抛出异常
SyntaxError 在代码为错误形式时触发
TypeError 类型错误
ValueError 在使用不合适的值时抛出异常
ZeroDivisionError 0作为除数时抛出异常
'''
自定义异常类
class MyException(Exception):
pass
n = 10
if n < 20:
raise MyException('我的异常')
捕捉异常
'''
try:
pass
except:
pass
'''
x = None
while True:
try:
if x == None:
x = int(input('分子:'))
y = int(input('分母:'))
print('x / y = {}'.format(x/y))
break
except:
print('分母不能为0!')
捕获多个异常 / else / finally
class MyException1(Exception):
pass
class MyException2(Exception):
pass
i = int(input('输入一个数字:'))
try:
if i == 1:
raise MyException1()
elif i == 2:
raise MyException2()
except MyException1:
print('exception 1')
except MyException2:
print('exception 2')
else:
print('else')
finally:
print('finally')
捕获异常对象
class MyException(Exception):
pass
try:
raise MyException()
except MyException as e:
print(e)
练习1:
class StartMobilException(Exception):
pass
import random
class Mobil:
def start(self):
value = random.randint(1, 100)
if value < 50:
raise StartMobilException('开机错误')
mobile = Mobil()
try:
mobile.start()
except StartMobilException as e:
print(e)
练习2
class JC:
def compute(self, n):
if n == 1:
return 1
elif n <= 0:
raise JCException('阶乘数字应大于0')
else:
return n * self.compute(n - 1)
class JCException(Exception):
pass
jc = JC()
n = int(input('输入阶乘数字:'))
try:
print(jc.compute(n))
except JCException as e:
print(e)
网友评论