异常的捕获

异常捕获

异常常规捕获

格式

try:
    可能发生错误的代码
except:
    如果出现异常执行的代码

捕获指定异常

try:
    print(name)
except NameError:
    print('name变量名称未定义错误')

多个异常捕获

try:
    print(1/0)
except (NameError, ZeroDivisionError):
    print('ZeroDivision错误...')

异常捕获并输出描述信息

try:
    print(num)
except (NameError, ZeroDivisionError) as e:
    print(e)

异常else

try:
    print(1)
except Exception as e:
    print(e)
else:
    print('我是else,是没有异常的时候执行的代码')

异常的finally

try:
    f = open('test.txt', 'r')
except Exception as e:
    f = open('test.txt', 'w')
else:
    print('没有异常,真开心')
finally:
    f.close()

实例:

异常的传递

import time
try:
    f = open('test.txt')
    try:
        while True:
            content = f.readline()
            if len(content) == 0:
                break
            time.sleep(2)
            print(content, end='')
    except:
        # 如果在读取文件的过程中,产生了异常,那么就会捕获到
        # 比如 按下了 ctrl+c
        print('意外终止了读取数据')
    finally:
        f.close()
        print('关闭文件')
except:
    print("没有这个文件")

抛出自定义异常

class ShortInputError(Exception):
	def __init__(self, length, min_length):
    self.length = length        
    self.min_len = min_len
    def __str__(self):
    return f'您输入的密码长度为{self.length}位,不能少于{self.min_length}个字符'
def main():
	try:        
		password = input('请输入您的密码:')
        if len(password) < 6:           
        	raise ShortInputError(len(password), 6)
        except Exception as e: 
        	print(e)
        else:
        	print('密码输入完成')
main()

需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开

try:
    f = open('linux.txt', 'r')
except:
    f = open('linux.txt', 'w')

需求:尝试以r模式打开文件,如果文件不存在,则以w方式打开

try:
    f = open('linux.txt', 'r')
except:
    f = open('linux.txt', 'w')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值