Exception 几乎所有异常类都是他派生出来的
AttributeError 引用属性或给他赋值失败时引发
OSError 操作系统不能执行指定的任务(如打开文件时引发),有多个子类
IndexError 使用序列中不存在的索引时引发,为LookupError的子类
KeyError 使用映射中不存在的键时引发,为LookupError的子类
NameError 找不到变量名称时引发
SyntaxError 代码不正确时引发
TypeError 将内置操作或函数用于类型不正确时的对象引发
ValueError 将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适
ZeroDivisionError 在除法或求模运算的第二个参数为0时引发
#语法错误
#异常,在程序运行时报出的异常
# def div(a,b):
# print(a/b)
#div(1/0) #ZeroDivisionError: division by zero
#异常处理:
'''
try:
可能出现的异常的代码
except:
如果有异常执行的代码
finally:
无论有没有异常都会执行的代码
情况1:
try:
有可能产生多种异常
except 异常的类型1:
输出
except 异常的类型2:
输出
except exception as err: #最大的异常放在最下
print('出错了!',err) #err可以获得错误原因
try:
可能出现的异常的代码
except:
如果有异常执行的代码
else:
pass #如果有else try中就不能出现return
情况4:
#文件操作 stream.close()
#数据库操作 close() 放入finally执行
try:
可能出现的异常的代码
except:
如果有异常执行的代码
finally:
无论有没有异常都会执行的代码
'''
def func():
try:
n1=int(input('输入第一个数字:'))
n2=int(input('输入第二个数字:'))
per=input('请输入(+ - * /)')
if per=='+':
result=n1+n2
elif per=='-':
result=n1-n2
elif per=='*':
result=n1*n2
elif per=='/':
result=n1/n2
else:
print('符号输入有误')
print('结果是:',result)
except ZeroDivisionError:
print('除数不能为0')
except ValueError:
print('必须输入数字')
func()
def func1():
stream=None
try:
stream=open(r'E:\Pycharm\python100题\代码\book\users.txt')
container=stream.read()
print(container)
except Exception as err:
print('错误类型为',err)
finally:
print('-------finally-------')
if stream:
stream.close()
def func1():
stream=None
try:
stream=open(r'E:\Pycharm\python100题\代码\book\users.txt')
container=stream.read()
print(container)
except Exception as err:
print('错误类型为',err)
finally:
print('-------finally-------')
if stream:
stream.close()
func1()
#抛出异常 raise 异常类型('异常原因')
def func1():
username=input('请输入用户名:')
if len(username)<6:
raise Exception('用户长度必须六位以上')
else:
print('用户输入的用户名:',username)
try:
func1()
except Exception as err:
print(err)
print('注册失败')
else:
print('注册成功'
)