异常处理
Posted liuafan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理相关的知识,希望对你有一定的参考价值。
错误分类:
1.语法错误: 你程序未执行之前,pycharm已经给你做了提示了.
name
if 1> 0 ;
pass
age = 3
2. 逻辑错误
num = int(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, raise
8, 自定义异常处理.
9 assert
‘‘‘
以上是关于异常处理的主要内容,如果未能解决你的问题,请参考以下文章
java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段