十分钟彻底搞定python异常处理

异常处理:

捕获异常,简单的捕获异常语法,在程序开发时,可以尝试加如 try来捕获异常

try:    尝试执行的代码except:  出现错误的处理

try尝试 下方填写要尝试的密码,不确定能不能够正常执行的代码

except 如果不是,下方填写尝试失败的代码

例子:简单的异常捕获演练–要求用户输入整数

try:
    #不能确定争取执行的代码
    #提示用户输入一个数字
    num = int(input("请输入一个数字:"))
except:
    print("请输入一个正确的数字!")
print("-"*50)

错误类型捕获:

在程序执行时,可能会遇到不同类型的,并且需要针对不同类型的异常,做出不同的响应,这个时候就需要指定错误类型了

try:
    #尝试执行的代码
    pass
except 错误类型1:
    #针对错误类型1,对应的代码处理
    pass
except(错误类型2,错误类型3):
    #针对错误类型2 和3 对应的代码处理
    pass
except Exception as result:
    print("未知错误 %s" %result)

示例需求:

提示用户输入一个整数

使用8除以用户输入的整数并且输出

while True:
    try:
        # 提示用户输入一个整数
        num = int(input("输入一个整数:"))
        # 输入不是整数就报错,输入0也是报错,这里我们需要捕获异常 赋值错误的第一个单词作为关键字进行处理
        result = 8 / num
        print(result)
    except ZeroDivisionError:
        print("数学错误")
    except ValueError:
        print("请输入数字")

捕获未知错误:

except Exception as result:
    print("未知错误 %s" %result)

可以把未知错误输出到控制台,而不会报错崩溃使用 Exception关键字

try:
    # 提示用户输入一个整数
    num = int(input("输入一个整数:"))
    # 输入不是整数就报错,输入0也是报错,这里我们需要捕获异常 赋值错误的第一个单词作为关键字进行处理
    result = 8 / num
    print(result)
except ValueError:
    print("请输入数字")
except Exception as result:
    print("未知错误%s"%result)

异常捕获的完整语法:

try:
    #尝试执行的代码
    pass
except 错误类型1的第一个关键字:
  #针对错误类型1对应的代码处理
    pass
except 错误类型2的第一个关键词:
    #针对错误类型2的对应代码处理
    pass
except (错误类型3,错误类型4):
    #针对错误类型3,4的对应代码处理
    pass
except Exception as result:
    #打印错误信息
    print(result)
else:
    #没异常会执行的代码
    pass
finally:
    #无论是否有异常,都会执行的代码
    print("无论是否存在异常,都会执行的代码")

示例代码:

try:
    # 提示用户输入一个整数
    num = int(input("输入一个整数:"))
    # 输入不是整数就报错,输入0也是报错,这里我们需要捕获异常 赋值错误的第一个单词作为关键字进行处理
    result = 8 / num
    print(result)
except ValueError:
    print("请输入数字")
except Exception as result:
    print("未知错误%s" % result)
else:
    print("尝试成功!")
finally:
    print("无论是否出现错误都会执行的代码")
print("==="*20)

异常的传递:

当函数/方法执行出现异常时,会将异常传递给函数/方法的调用一方

如果传递到主程序,仍然没有异常处理,程序才会被终止

所以说,只需要在主程序中做一个异常处理就可以完成代码的异常处理

示例代码:

def demo1():
    return int(input("输入整数:"))
def demo2():
    return demo1()
#利用异常的传递性,在主程序捕获异常
try:
    print(demo2())
except Exception as result:
    print("程序出现了%s错误"%(result))

抛出raise异常:

主动抛出异常

python中提供了一个 Exception 异常类

在开发时,如果满足特定业务的需求时,希望抛出异常,可以

创建一个 Exception的对象

使用 raise关键字抛出异常对象

需求案例:

定义 input_password函数,提示用户输入密码

如果用户输入长度<8,抛出异常

如果用户输入长度>=8 返回输入的密码

def input_password():
    #1.提示用户输入密码
    result =input("请输入密码")
    #2.判断密码长度 >=8 ,返回用户输入的密码
    if len(result) >=8:
        return result
    #3.如果<8 主动抛出异常
    print("主动抛出异常!")
    #1>创建异常对象 -可以使用错误信息字符串作为参数
    ex =Exception("密码长度不够!")
    #2> 主动抛出异常
    raise ex
#提示用户输入密码
try:
    print(input_password())
except Exception as result:
    print(result)

以上为python全部的全部的异常处理,还是比较简单的!

python学习

如果你想学习Python,但是找不到学习路径和资源
欢迎加入新的交流【君羊】:905229245
一起探讨编程知识,成为大神,群里还有软件安装包,实战案例、学习资料

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值