python捕获异常的笔记与自己构想的一些小场景

# 捕获异常

NameError, 表示没有定义

dict1 = {1:1}

print(dict1[2]) # KeyError表示字典没有key为2的元素

ModuleNotFoundError,表示找不到这个模块

a = 100/0

print(a) #ZeroDivisionError

异常对象的类都继承标准库里面的Exception类

while True:

try:

miles = input(‘请输入英里数:’)

km = int(miles)* 1.609344

print(f’等于{km}公里’)

except ValueError:

print(‘你输入为非数字字符’)

try:

choice = input(‘请输入你的选择:’)

if choice == ‘1’:

100/0

elif choice == ‘2’:

[][2]

except ZeroDivisionError:

print(‘出现ZeroDivisionError’)

except IndexError:

print(‘出现IndexError’)

# 可以匹配所有类型的异常,这样子任何类型的异常发生都不会终止程序

try:

100/0

except Exception as e: #所有的异常都是Exception的子类,所以Exception能匹配所有类型的异常

print(‘未知异常:’, e)

“”"except为空,也可以匹配所有类型的异常,而且可以通过traceback库

库,显示异常的信息和异常产生处的函数调用栈的信息,如下"""

import traceback

try:

100/0

except Exception as e:

print(‘未知异常:’, e)

print(traceback.format_exc()) #打印出代码哪行出现了异常

“”“自定义异常,异常类型都是继承自Exception的类,表示各种类型的错误
我们也可以自己定义异常,比如我们写一个用户注册的函数,要求用户输入的电话号码
只能是中国的电话号码,并且电话号码中不能有非数字字符”""

异常对象,代表电话号码有错误的字符

class InvalidCharError(Exception):
pass

异常对象,代表电话号码非中国号码

class NotChinaTelError(Exception):
pass

定义了上面的异常,当用户输入电话号码时,出现相应错误的时候

我们可以使用raise关键字来抛出对应的自定义异常

# 如果用户输入手机号码为错误,如果继续输入1,如果结束输入0,如果输入的既不是1又不是0其他内容只能有3此输入机会,如果3此机会都是非1或0的

其它字符,整个程序输入

isFlag = 1
while isFlag:
def register():
tel = input(‘请输入注册您的电话号码:’)

    # 如果有非数字字符
    if not tel.isdigit():
        raise InvalidCharError

    # 如果不是以86开头,则不是中国号码
    if not tel.startswith('86'):
        raise NotChinaTelError

    return tel

try:
    ret = register()
except InvalidCharError:
    print('电话号码中有错误的字符')
except NotChinaTelError:
    print('非中国手机号码')

count = 0
while count <= 3:
    try:
        isFlag = int(input('如果继续请输入1否则输入0:'))
        if isFlag == 0:
            break
        elif isFlag == 1:
            count = 4
    except Exception as e:
        print('输入的为非法数字')
        count += 1
    if count == 3:
        print('您输入的非1或0的其他字符内容超过了3次,自动结束输入程序')
        break
if isFlag == 0 or count == 3:
    break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值