Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 598|回复: 0

python异常报错处理

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-30 17:25:06 | 显示全部楼层 |阅读模式

    1.使用try...except捕捉异常

    try:

      s=1/0

    except IndexError:

      print ('except')

    except KeyError:

      print ('Keyerror')

    except ZeroDivisionError:

      print ('ZeroDivisionError')

     

    try:

      s=1/0

    except:

      print ('出现异常')

    或有多个异常名称的格式

    try:

      s = 1/0

    except(IndexError,KeyError,ZeroDivisionError),e:

      print (e)

     

    2.使用try ...except...else语句捕捉异常

    当try块中的代码没有异常时,则跳过except块中的代码,执行else块中的代码

    工作原理:

    1).如果try代码块语句执行发生异常,Python就跳回try,执行第一个匹配该异常的except块中的代码

    2).如果异常发生在try代码块内,没有匹配的except子句,name异常就会向上传递到程序中之前进入的try中,或者转到这个进程的顶层(这会使python终止当前程序并打印默认的错误消息)

    3).如果try块中的代码执行没有异常发生,则python将执行else块中的代码

     

    3.使用try...finally捕捉异常

    当try块中包含了finally语句,则python一定会在执行完try块中的代码之后在执行finally块中的代码(无论try块中的代码是否发生异常都将执行finally块中的代码)

    工作原理:

    1).如果执行try块中的代码时没有发生异常,则Python会跳转至finally语句并执行该代码块,然后继续执行程序中finally语句之后的代码

    2).如果执行try块中的代码时发生异常,则Python依然会执行finally语句中的代码块,但是接着会将异常向上传递到上层的try语句或顶层的默认处理器,程序不会继续执行导致发生异常的语句之后的try块中的代码。也就是说,即使发生了异常,finally代码块还是会被执行,和except不同的是,finally不会终止异常,而是在finally代码块执行后,一直处于发生状态

     

    4.使用raise抛出异常(手工引发异常)

    raise<异常对象>

    ‘异常对象’表示将引发异常的异常名称,且异常名称标识了具体的异常类。raise语句还可指定对异常对象进行初始化的参数,为此需要在异常类的名称后添加一个逗号以及指定参数(或者由参数构成的一个元组 )。一旦执行了raise语句,raise语句后的代码将不能被执行

    raise<异常对象>,<异常信息标识>

    例子:

    try:

      raise NameError

    except NameError:

      print ('抛出一个异常')

     

    5.自定义异常

    格式class MyError(Exception):

        def __init__(self,value):

          self.value=value

        def __str__(self):

          return repr(self.value)

       try:

          raise MyError(2*2)

       except MyError as e:

          print('My exceotion occurred,value:',e.value)

    6.使用assert语句

    用于检测某个条件表达式是否为真。又称断言语句,即assert认为检测的表达式永远为真,断言失败就会引发AssertionError异常

    语法格式:assert<条件判断表达式>

    username = 'admin'

    password='123456'

    assert username =='admin' and password == 'admin','密码错误!'

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 23:09 , Processed in 0.056587 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表