python异常处理

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('注册成功'
          )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值