Python异常处理

Python异常处理

异常

  • 广义上的错误分为错误和异常
  • 错误指的是可以人为避免
  • 异常是指在语法逻辑正确的前提下,出现的问题
  • 在python里,异常是一个类
  • 异常处理
    • 不能保证程序永远正常运行

    • 但必须保证程序在最坏的情况下得到的问题被妥善处理

    • python 异常处理模块语法

      try:
      尝试运行,如无异常,任务完成;如异常,将异常从当前代码块扔出尝试解决异常
      except 异常类型1:
      处理方法
      except(异常类型1,异常类型2,…):
      处理方法
      except:
      所有异常的解决方案
      else:
      如无异常,将执行此代码
      finally:
      无论有没有异常都要执行此代码

  • 用户手动引发异常
    • 当某些情况是,用户希望自己引发一个异常时,可以使用raise关键字来引发异常
#异常案例
try:
    num=int(input("输入值"))
    rst=100/num
#捕获异常,把异常实例化,出错信息会在实例里
except ZeroDivisionError as e:
    print("输入有误")
    print(e)
#     exit()
except Exception as e:
    print("未知错误")
    print(e)
else:
    print(rst)
finally:
    print("程序结束")
输入值a
未知错误
invalid literal for int() with base 10: 'a'
程序结束
#raise案例
#自定义异常
#需注意,自定义异常必须是系统异常的子类
class DanaError(ValueError):
    pass
try:
    print("woaiwang")
    print(3.1415926)
    #手动引发一个异常
    #语法: raise ErrorEClassName
    raise ValueError
except NameError as e:
    print("NameError")
except ValueError as e:
    print("ValueError-用户手动")
except Exception as e:
    print("未知错误")
finally:
    print("我肯定会被执行")
woaiwang
3.1415926
ValueError-用户手动
我肯定会被执行
# 登录函数
def login():
    pwd = input('请输入密码:')
    if len(pwd) == 6:
        return pwd

    # 创建异常对象
    ex = Exception('长度不符合')
    # 抛出异常对象
    raise ex
#
login()
请输入密码:44



---------------------------------------------------------------------------

Exception                                 Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_26880/3100399982.py in <module>
     10     raise ex
     11 #
---> 12 login()


~\AppData\Local\Temp/ipykernel_26880/3100399982.py in login()
      8     ex = Exception('长度不符合')
      9     # 抛出异常对象
---> 10     raise ex
     11 #
     12 login()


Exception: 长度不符合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值