2.1 try---except
try:
<语句>
except <异常类名字>:
<语句>
a = input("请输入被除数:")
b = input("请输入除数:")
if a.isdigit() and b.isdigit():
a, b = int(a), int(b)
if b != 0:
print(a / b)
else:
print("除零错误")
else:
print("输入有误")
try:
a = int(input("请输入被除数:"))
b = int(input("请输入除数:"))
print(a / b)
except Exception:
print("输入有误/除零错误")
2.2 except 多个异常
try:
<语句>
except <异常类名字>:
<语句>
except <异常类名字>:
<语句>
else:
# 如果没有异常发生
<语句>
2.3 多个异常写到一个元组中
try:
代码
except(Exception1[,Exception2[,...ExceptionN]]]):
发生以上多个异常中的一个,执行这块代码
2.4 获取异常信息
try:
f = open(‘124.txt‘, ‘r‘)
f.write(‘HelloWorld‘)
# 将捕获到的异常存储到到变量errMsg中
except IOError as errMsg:
print(errMsg)
2.5 捕获所有异常
except 不带任何异常
try:
a = 2/0
except:
print("遇到异常")
except 父类Exception
try:
b = 3/0
except BaseException as result:
print(result)
2.6 捕获异常中else的用法
try:
b = 3/1
except BaseException as result:
print(result)
else:
# 可以访问b的值
print("没有遇到异常,结果为:%d" % b)
2.7 try--- finally
try:
f = open(‘123.txt‘, ‘r‘)
# 如果遇到异常,后续代码不再执行,直接执行except模块
f.write(‘HelloWorld‘)
# 在这关闭文件是否合适
f.close()
except IOError as errMsg:
print(errMsg)
else:
print("写入文件成功")
finally:
# 最终一定要关闭文件(打印,验证是否执行)
try:
f.close()
except NameError:
print("文件不存在")
else:
print("finally,文件关闭")
class GenderException(Exception):
def __init__(self):
super().__init__()
# args为BaseException的属性
self.args = ‘性别只能为男或者女‘
# 也可以自定义一个属性
self.msg = ‘性别只能为男或者女‘
raise [Exception [, args [, traceback]]]
class Student(object):
def __init__(self, name, gender, age):
self.__name = name
self.setGender(gender)
self.__age = age
def setGender(self, gender):
if gender == ‘男‘ or gender == ‘女‘:
self.__gender = gender
else:
# 抛出一个自定义的性别异常(也可以以列表的形式抛出多个异常)
# raise [GenderException(), Exception()]
raise GenderException()
try:
stu1 = Student(‘大黄‘, ‘男1‘, 18)
except GenderException as e:
# 打印自定义的信息
print(e.msg)
# 打印父类属性的信息
print(e.args)
原文:https://www.cnblogs.com/songdanlee/p/11367688.html