異常處理

錯誤分類:python

1.語法錯誤: 你程序未執行以前,pycharm已經給你作了提示了.git

name數據庫

if  1> 0 ;微信

  pass網絡

age = 3微信支付

2. 邏輯錯誤utf-8

num = int(input('>>>'))pycharm

 

什麼是異常?input

由錯誤引起的,並且 出現異常就會終止程序源碼

 

爲何要進行異常處理?

1.異常就會終止程序,用戶體驗極差

2.讓你的代碼不冗餘

 

異常處理:

1. if ,異常處理,他只能處理簡單的邏輯

num = input('>>>')

if num.isdigit():

  num = int(num)

  if  1<= num <=5:

    if

else:

  print('有非數字類型')

2.try 異常處理

遇到報錯信息,防止程序終止,執行另外一個語句.

2.1單獨一個條件,單支.

try:

  num = int(input('>>>'))       #ValueError

  name          #NameError

    # if 1 > 0; # SyntaxError

  dic = {}
  dic['key']   #KeyEroor

except NameError:

  print('出現了NameError錯誤')

2.2多分支

try:
num = int(input('>>>')) #ValueError
# name # NameError
# dic = {}
# dic['key'] # KeyError
# li = [1,2,3]
# li[10] # IndexError
# import ac # ImportError
except NameError:
print('出現了NameError錯誤')
except ValueError:
print('出現了ValueError錯誤')
except KeyError:
print('出現了KeyError錯誤')

print(222)
print(333)
print(114441)
class A:
def __str__(self):
return 'list index out of range'
a1 = A()
print(a1)
# 3 萬能異常處理.
# try:
# # num = int(input('>>>')) #ValueError
# # name # NameError
# dic = {}
# # dic['key'] # KeyError
# li = [1,2,3]
# li[10] # IndexError
# import ac # ImportError
# except Exception as e:
# # print('您輸入的不規範,請從新輸入...')
# print('稍等片刻,去去就來...')
# 異常處理的兩種結局方式:
# 1,只是顯示錯誤信息,不終止程序就行. 萬能的
# 2,針對不一樣的錯誤,提示不一樣的信息,進行不一樣的操做. 多分支

# def login():
# pass
#
# def regsiter():
# pass
#
# def article():
# pass
#
# def dariy():
# pass
# dic = {
# 1:login,
# 2:regsiter,
# 3:article,
# 4:dariy,
# }
# while True:
# choice = input('請輸入:')
# if choice.isdigit():
# choice = int(choice)
# if 1 <= choice <=4:
# dic[choice]()
#
# else:
# print('請範圍內的數字...')
# else:
# print('請輸入數字...')
# while True:
# try:
# choice = int(input('請輸入:'))
# dic[choice]()
# except ValueError:
# print('請輸入數字...')
# except KeyError:
# print('請範圍內的數字...')
# 4 多分支+萬能.

# while True:
# try:
# choice = int(input('請輸入:'))
# dic[choice]()
# except ValueError:
# print('請輸入數字...')
# except Exception as e:
# print(e)
# except KeyError:
# print('請範圍內的數字...')

# try:
# choice = int(input('請輸入:'))
# except ValueError:
# print('請輸入數字...')
# except KeyError:
# print('請範圍內的數字...')
# except Exception as e:
# print(e)

# 2.5 try  except except ...  else# 若是程序出現異常執行except,就不會執行else,反之則執行else# try:#     print('個人卡扣除100元')#     print('旭哥的卡增長了100元')# except NameError:#     print('轉帳出現異常...')# else:#     print('轉帳成功')#2.6# try  except except ...  else  .finally# try finally# try:#     print('個人卡扣除100元')#     name#     print('旭哥的卡增長了100元')# except NameError:#     print('轉帳出現異常...')# else:#     print('轉帳成功')# finally:#     print('6666666')# 666不執行# name# print(666)# try:#     name# finally:#     print(666)# try:#     f = open('t1',encoding='utf-8')#     print(f.read())#     '''多個文件句柄的操做'''#     f.write()# finally:##     f.close()#     print(666)# 最後close()# f.close()# def func():#     try:#         return 555#     finally:#         '''代碼塊'''#         print(777)# func()# try finally  關閉文件句柄,關閉數據庫的連接,關閉網絡連接等等# 2.7 主動觸發異常# raise TypeError('類型錯誤')# class Payment:#     def pay(self,money):#         raise TypeError('你的類中應該用一個pay方法')## class QQ(Payment):#     def pay(self,money):#         print('您用qq支付了%s元' % money)### class Wechat(Payment):#     def pay(self,money):#         print('您用微信支付了%s元' % money)## def pay(obj,money):#     obj.pay(money)  # a1.pay(200)## q1 = QQ()# w1 = Wechat()# pay(w1,1000)#2.8  自定義異常 (大項目,針對於python不具有的一些錯誤類型.)# raise TypeError('類型錯誤')# name1 :  python解釋器無法解決的錯誤:   周星星# class 周星星(BaseException):#     def __init__(self,msg):#         self.msg=msg#     def __str__(self):#         return self.msg## # # raise EvaException('EvaException:錯誤!!!!' )# # # raise TypeError('EvaException:錯誤!!!!' )# try:#     raise 周星星('EvaException:錯誤!!!!' )# except 周星星 as e:  # e = EvaException('類型錯誤')#     print(e)# 斷言 源碼 主動拋出異常# condition = 1 > 2# assert condition  # 若是條件不知足強行終止.# print(111)# print(222)# print(113331)# print(5455)# if 1 == 2:#     print(111)#     print(222)#     print(113331)#     print(5455)'''1,try ...except  單個狀況2,try except except.....  多分支,針對多個你已知的異常,分別導向不一樣的代碼. *3,try except Exception as e:  萬能異常處理. 你對出現的異常錯誤未知,你要用萬能的. *    # 1,只是顯示錯誤信息,不終止程序就行. 萬能的    # 2,針對不一樣的錯誤,提示不一樣的信息,進行不一樣的操做.  多分支,多分支+ 萬能4,try except except except Exception as e:  多分支 + 萬能 *5,try  except except... else  出現異常就不執行else代碼反之則執行.6,    try  except except... else,finally  不經常使用    try finally * 涉及到關閉文件句柄,網絡連接,數據庫連接等等.7, raise8, 自定義異常處理.9 assert'''
相關文章
相關標籤/搜索