基于網(wǎng)絡(luò)課程《Python全棧開發(fā)專題》 記錄筆記械哟,請支持正版課程。
raise拋出異常
# raise Exception('我是一個異常')
# raise ArithmeticError('這是一個和數(shù)值有關(guān)的異常')
# from boto.codedeploy.exceptions import InvalidRoleException
# raise InvalidRoleException(2, '異常信息')
'''
一些常見的異常:
Exception 所有異常類的基類
AttributeError 屬性引用或賦值失敗時拋出的異常
OSError 當(dāng)操作系統(tǒng)無法執(zhí)行任務(wù)時拋出的異常
KeyError 在使用序列中不存在的鍵值時拋出的異常
IndexError 在使用序列中不存在的索引時拋出的異常
NameError 在找不到名字(變量)時拋出異常
SyntaxError 在代碼為錯誤形式時觸發(fā)
TypeError 類型錯誤
ValueError 在使用不合適的值時拋出異常
ZeroDivisionError 0作為除數(shù)時拋出異常
'''
自定義異常類
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('輸入一個數(shù)字:'))
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)
練習(xí)1:
class StartMobilException(Exception):
pass
import random
class Mobil:
def start(self):
value = random.randint(1, 100)
if value < 50:
raise StartMobilException('開機(jī)錯誤')
mobile = Mobil()
try:
mobile.start()
except StartMobilException as e:
print(e)
練習(xí)2
class JC:
def compute(self, n):
if n == 1:
return 1
elif n <= 0:
raise JCException('階乘數(shù)字應(yīng)大于0')
else:
return n * self.compute(n - 1)
class JCException(Exception):
pass
jc = JC()
n = int(input('輸入階乘數(shù)字:'))
try:
print(jc.compute(n))
except JCException as e:
print(e)