2020-11-13 异常和pycharm调试模式

1411-李同学

发表文章数:148

热门标签

首页 » Python » 正文

一、异常

软件程序在运行过程中遇到的问题我们称为异常,英文是Exception,意思是例外。

异常机制本质:所谓异常处理,就是指程序在出现问题时依然可以正确的执行剩余的程序,而不会因为异常而终止程序执行。

BaseException是所有异常父类。

异常也采用对象的方式来处理。

处理过程

  • 抛出异常

  • 捕获异常

二、try_except 结构

结构:

try:

    被监控的可能引发异常的语句块

except BaseException as e:

    异常处理语句块
 #测试异常的顺序
try:
    print("1")
    a=3/0
    print("2")

except BaseException as e:
    print("3")
    print(e)

print("4")
#示例:玄幻输入数字,如果不是数字处理异常。直到输入88
while True:
    try:
        a=int(input(""))
        print("a")
        if a==88:
            break
    except BaseException as e:
        print("不是数字类型")  

三、try 多个except结构

结构

try:

      被监控的语句模块

except Exception 1:

     处理Exception1 的语句

except Exception2:

     处理Exception2 的语句

规则:先子类再父类,父类在前子类的异常是无法识别的

#测试try多个except结构

try:
    a=input("")
    b=input("")
    c=float(a)/float(b)
    print(c)


except ZeroDivisionError:
    print("除数不能为0")

except ValueError:
    print("不能将字符串转换为数字")

except NameError:
    print("变量不存在")

四、else结构

try_except_else 结构

执行逻辑,如果没有抛出异常,则执行else块,如果抛出异常,执行except模块

#测试try多个except结构

try:
    a=input("")
    b=input("")
    c=float(a)/float(b)

except BaseException as e:
    print(e)

else:
    print(c)

五、finally结构

说明:finally无论是否发生异常都会被执行,通常用来释放try模块中申请的资源

#测试try except finally结构

try:
    a=input("")
    b=input("")
    c=float(a)/float(b)

except BaseException as e:
    print(e)

else:
    print(c)

finally:
    print("finally must execute")

六、常见异常的汇总及说明

一般不要将return放到try excpet else finally 块中,一般放到方法最后。

  • SyntaxError:语法错误

  • NameError:尝试访问一个没有申明的变量

  • ZeroDivisionError:除数为0错误

  • ValueError : 数值错误

  • TypeError:类型错误

  • AttributeError:访问对象的不存在的属性

  • IndexError:索引越界异常

  • KeyError:字典的关键字不存在

七、with上下文管理

概念:可以通过with上下文管理,更方便的实现释放资源的操作。

#结构

with context_expr as var:

      语句块

功能:实现上下文自动管理,在with代码块执行完毕后自动还原之前进入该代码前的现场或上下文。不论何种原因跳出with,不论是否有异常,总能保证资源正常释放。极大的简化了工作。

#测试with上下文管理
with open(r"path","r") as f:
    content=f.readline
    print(content)
    
print("finished")

八、自定义异常

自定义异常由raise语句主动抛出。

#测试自定义异常类
class AgeError(Exception):
    def __init__(self,errorInfo):
        Exception.__init__(self)
        self.errorInfo=errorInfo

    def __str__(self):
        return "年龄错误"

if __name__=="__main__":
    age=int(input("输入一个年龄"))
    if age<1 or age>150:
        raise AgeError(age)
    else:
        print("age:",age)

九、pycharm的调试模式

断点:程序运行到此此处,暂时挂起,停止执行。

设置断点:

  • 在行号后面单机可增加断电

  • 在断点上再单击可以取消断点

进入调试试图

  • shift+f9

  • debug

调试操作

  • step over: 若当前执行的是一个函数,则会被这个函数当作整体一步完成,不会进入函数内部

  • step into: 若当前执行的是一个函数,则会进入这个函数内部

  • step out: 从子函数中跳出

  • alt+f9: 一直执行,到光标处停止,用在循环内部时,点击一次就执行一个循环。

标签:

未经允许不得转载:作者:1411-李同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-11-13 异常和pycharm调试模式》 发布于2020-11-13

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录