python异常

         ​​​1.异常

1.1异常的概念

1.2异常的继承关系

1.3异常发生的后果

1.4处理异常方式

2.自定义异常

2.1finally关键字

2.2自定义异常


1.异常

1.1异常的概念

相较于正常而言不正常的现象叫做异常,在程序开发过程中遇到错误或BUG都是补充正常情况。异常并不等价于错误,异常是软件在运行的过程中因为一些原因如:使用者使用不当引起的程序错误,导致软件奔溃的现象叫异常。

1.2异常的继承关系

BaseException() 所有异常的父类
Exception() BaseException() 的子类)是常见异常的父类

1.3异常发生的后果

导致程序的奔溃

1.4处理异常方式

try - except 语句块 ------- 异常捕获
语法格式:
try:
# 有可能发生异常的代码
except:
# 处理异常
try:
    num = int(input("请输入一个数字:"))
    print("hhhh")
    result = num + 10
except:
    print("发生了异常")
    print("开始处理异常")
    num = int(input("必须输入的是数字:"))
    result = num + 10
print("{} + 10 = {}".format(num,result))
print("结束了")

>>>
请输入一个数字:123
hhhh
123 + 10 = 133
结束了

>>>
请输入一个数字:derf
发生了异常
开始处理异常
必须输入的是数字:3
3 + 10 = 13
结束了

#如果想把异常情况打印出来,可以写 except Exception as e
try:
    num = int(input("请输入一个数字:"))
    print("hhhh")
    result = num + 10
except Exception as e:
    print("发生了异常",e)
    print("开始处理异常")
    num = int(input("必须输入的是数字:"))
    result = num + 10
print("{} + 10 = {}".format(num,result))
print("结束了")

>>>
请输入一个数字:hhh
发生了异常 invalid literal for int() with base 10: 'hhh'
开始处理异常
必须输入的是数字:12
12 + 10 = 22
结束了

2.自定义异常

2.1finally关键字

表示必须(必要)执行的代码(释放资源、IO等)

注意:在函数中,如果 return 后存在 finally 关键字,那么代码并不会直接返回(执行 return ),而
是需要执行 finally 代码块,再执行返回( return , 所以说 finally 会在 return 之前执行
def demo(msg):
    try:
        int(input(msg))
        print("hello word")
        return "A"
    except Exception as e:
        print("处理了异常")
        return "B"
    finally:
        print("释放资源")
        
   
res = demo("请输入一个数字:")
print(res)

>>>
请输入一个数字:12
hello word
释放资源
A

>>>
请输入一个数字:cf
处理了异常
释放资源
B

2.2自定义异常

首先创建一个类,之后继承 Exception 或者 BaseException ,建议使用 Exception
#自定义了zdy类,zdy类继承Exception类
class zdy(Exception):
    def __init__(self,msg):
        Exception.__init__(self,msg)

def login(username):
    if username == None:
        raise zdy("用户名不能为空")
    
try:
    login(None)
except Exception as e:
    print("捕捉到的异常,信息是------>",e)

>>>
捕捉到的异常,信息是------> 用户名不能为空

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值