python异常处理和IO操作

异常处理

详细可以见官网:https://docs.python.org/zh-cn/3/tutorial/errors.html

异常处理

语法:
try:
可能出现异常的代码
except:
出现异常后要执行的操作
else:
不出现异常时执行的操作
finally:
无论是否出现异常都必须要执行的操作

如:默认捕获所有异常

tr:
    print('try即将执行...')
    # 注意 5/ 0 是错误语句
    a = 5 / 0 
except: #默认捕获所有异常
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')
	

在这里插入图片描述

捕获指定异常

就是说 你只想捕获某指定异常,其余异常运行错误。
如定义捕获上面的除数为0异常,如果不是该异常 则报错:

try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ValueError:
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

在这里插入图片描述

如 只捕获输出上面的 值报错(ValueError),正确输出

try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ValueError:
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

在这里插入图片描述

如果这时候 不是值类型报错,就会执行报错了。

  • 如果需要捕获多个异常
    expect ( ) ,每隔异常之间用逗号隔开。
try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except (ZeroDivisionError,ValueError):# 指定2个类型
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

在这里插入图片描述

查看 报错类型 ,获取报错类型并打印

  • 查看 报错类型
    很简单,可以把变量放在 全局啊 !然后执行就直接报错了! 报错中就有类型。
    如:除数为0异常
    在这里插入图片描述

如:值错误

#b = 6/0
d = 6/int('a')
try:
    print('try即将执行...')
    a = 5 / 0 #除数为0
  #  c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ZeroDivisionError:
    print('try语句出现异常啦')
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

在这里插入图片描述

  • 获取异常类型并打印
    expect 异常 as 名称 / expect (异常1,异常2) as 名称
try:
    print('try即将执行...')
   # a = 5 / 0 #除数为0
    c = 5 / int('abc') #int转换类型作物
#except: #默认捕获所有异常
except ValueError as e: # 捕获ValueError异常,并获取到异常对象,e是自定义名称
    print('try语句出现异常啦')
    print('异常类型为:',e) #输出异常类型
else:
    print('没有异常时输入该语句')
finally:
    print('finally')

在这里插入图片描述

自定义 异常

可以见官网:https://docs.python.org/zh-cn/3/tutorial/errors.html
这里简单做一个实验。
先class 自定义一个异常
然后在函数中用 raise 调用即可。

# 自定义异常,继承自Exception(exception类是所有异常类的父类)
class Usernameonoroff(Exception):
    pass

def fn(username):
    if username == 'admin' or username == 'ccx' :
        # 使用 raise 抛出异常
        raise Usernameonoroff('用户名已存在')
    else:
        print('这儿放不存在后的代码快,如 创建之类的。。。')

# 调用fn 函数
fn(input('请输入用户名:'))
print('*'*50)
fn(input('请输入用户名:'))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

҉人间无事人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值