"""
1、什么是异常
异常说错误发生的信号,一旦程序出错就会产生一个异常
如果该异常没有被处理,该异常就会被跑出来,程序的运行随即终止
异常由三部分组成:
1、具体哪一行代码抛出的异常
2、异常的种类
NameError:变量名为定义
IndexError:索引不存在
KeyError:key不存在
AttributeError:对象属性不存在
ValueError:值错误
TypeError:错误
3、异常的内容信息
2、为何要处理异常
为了增强程序的健壮性
3、如何处理异常
1、针对语法的错误:应该在程序运行前立即改正
2、针对逻辑错误:
2.1 如果逻辑错误发生的条件是可以预知的,应该if判断解决
2.2 如果逻辑错误发生的条件是不可预知的,那么异常一定会发生,考虑到程序的健壮性
我们应该处理异常,做好补救措施
try:
代码块
except 异常的类型:
发生异常后要执行的代码
"""
# 1 异常类只能用来处理指定的异常情况,如果非指定异常则无法处理。
s1 = 'hello'
try:
int(s1)
except IndexError as e: # 未捕获到异常,程序直接报错
print(e)
# 2 多分支
s1 = 'hello'
try:
int(s1)
except (IndexError, KeyError) as e:
print(e, '1')
except ValueError as e:
print(e, '3')
# 3 万能异常Exception
s1 = 'hello'
try:
int(s1)
except Exception as e:
print(e, '4')
# 4 多分支异常与万能异常
# 4.1 如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么骚年,大胆的去做吧,只有一个Exception就足够了。
# 4.2 如果你想要的效果是,对于不同的异常我们需要定制不同的处理逻辑,那就需要用到多分支了。
# 5 也可以在多分支后来一个Exception
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e, '5')
except Exception as e:
print(e, '6')
# 6 异常的其他机构
s1 = 'hello'
try:
int(s1)
except IndexError as e:
print(e)
except KeyError as e:
print(e)
except ValueError as e:
print(e)
# except Exception as e:
# print(e)
else:
print('try内代码块没有异常则执行我')
finally:
print('无论异常与否,都会执行该模块,通常是进行清理工作')
# 7 主动触发异常
try:
raise TypeError('类型错误')
except Exception as e:
print(e)
# 8 自定义异常
class EgonException(BaseException):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
raise EgonException('类型错误')
except EgonException as e:
print(e)
# 9 断言:assert 条件
assert 1 == 1
# assert 1 == 2
# 10 总结try..except
# 1:把错误处理和真正的工作分开来
# 2:代码更易组织,更清晰,复杂的工作任务更容易实现;
# 3:毫无疑问,更安全了,不至于由于一些小的疏忽而使程序意外崩溃了;
66 异常处理
最新推荐文章于 2024-04-13 13:38:30 发布