错误分类: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'''