Python11:异常处理

1. 什么是异常

1.1 异常

在这里插入图片描述

1.2 异常原因

AttributeError 、IOError 、ImportError 、IndexError、
SyntaxError、TypeError、ValueError、KeyError、NameError

常见错误:
	IndentationError: 缩进错误
	KeyboardInterrupt:  Ctrl+C被按下
	UnboundLocalError : 有同名的全局变量
异常展示:

print(a)    #NameError: name 'a' is not defined
print(10/0)     #ZeroDivisionError: division by zero

d = {
    
    'name':10}
print(d['age'])     #KeyError: 'age'
with open('hello.py') as f:
     pass         #FileNotFoundError:

a=b=18
if a>b:
    print('wrong')
else:
print('right')  #IndentationError: expected an indented block

2. 异常处理机制

Errors and Exceptions
在这里插入图片描述
在这里插入图片描述

try:
    a=1
    print(b)
except NameError as e:
    print('0-name error')
except KeyError as e:
    print('4-key error')
except Exception as e:
    print('1-exception')
else:
    print('2-no error')
finally:
    print('3-run code')

# 0-name error
# 3-run code

3. 触发异常

- Python 允许程序自行引发异常,自行引发异常使用 raise 语句来完成。

	raise语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,
	args 是自已提供的异常参数。
		raise [Exception [, args [, traceback]]]
		

在这里插入图片描述

在这里插入图片描述

4. 用户自定义异常

4.1 自定义异常的使用

  • 用户自定义异常都应该继承 Exception 基类或 Exception 的子类,在自定义异常类时基本不需要书写更多的代码,只要指定自定义异常类的父类即可。

演示:

class AgeError(ValueError):
    pass
age = int(input('age:'))
if 0<age<150:
    print(age)
else:
    #抛出异常
    raise AgeError('年龄必须在0-150之间!!')
结果:
Traceback (most recent call last):
  File "E:/AAAaaa---python day/Python8/异常.py", line 55, in <module>
    raise AgeError('年龄必须在0-150之间!!')
__main__.AgeError: 年龄必须在0-150之间!!

4.2 python异常使用规范

不要过度使用异常
不要使用过于庞大的 try 块
不要忽略捕获到的异常

猜你喜欢

转载自blog.csdn.net/weixin_46074899/article/details/114895295