异常处理

错误分类: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'''
相关文章
相关标签/搜索