从C到Py:Python的异常处理

本篇文章中我们将简单讲解一下有关Python中的异常处理,既有在代码中有显式表达的异常处理语法,还包括Pycharm手动调试的简单操作。

目录

Python异常处理

1、try-except结构

​编辑 2、try-except-else结构

raise抛出异常

常见异常类型

Pycharm程序调试

第一步:设置断点

第二步:进入调试窗口

第三步:开始调试


Python异常处理

我们先简单看一下Python中的“异常”,比如要得到两个数的商,但输入了一个0作为除数就会出现以下结果:

ZeroDivisionError: division by zero

程序的异常处理就是在原本代码的基础上,加上特定的语句,使得程序一旦报错(且是多种意义的报错),就执行另外的、备用的代码语句。以下是语法格式:

1、try-except结构

try:

        可能异常的代码

except 异常类型:

        异常处理代码(报错后执行)

以及第二种

try:

        可能异常的代码

except 异常类型A:

        异常处理代码(类型A报错后执行)

except 异常类型B:

        异常处理代码(类型B报错后执行)

捕获异常类型的顺序是按照先子类后父类的顺序(子类、父类需要在面向对象的部分介绍),简单来说,我们在编写多个异常类型时,将能捕获的种类最多的异常类型写在最后

这里的异常类型有很多种,我们拿两个数相除的程序来进行演示,对应的可能的异常分别是:被0除,数值输入错误,以及未知异常类型

try:
    num1=int(input('请输入一个整数:'))
    num2=int(input('请输入另一个整数:'))
    result=num1/num2
    print('结果', result)
except ZeroDivisionError:
    print('除数为0')
except ValueError:
    print('不能将字符串转为整数')
except BaseException:
    print('未知异常')

 2、try-except-else结构

try:

        可能异常的代码

except 异常类型:

        异常处理代码(报错后执行)

else:

        没有抛出异常执行的代码

以及第二种写法

try:

        可能异常的代码

except 异常类型:

        异常处理代码(报错后执行)

else:

        没有抛出异常执行的代码

finally:

        无论是否异常都执行的代码

这里在逻辑上就是增加了两个可以执行更多代码的位置,不再作代码示例。

PS:如果在except后不指定异常类型,表示捕获全部异常。

raise抛出异常

使用raise关键字可以抛出一个异常,用以提醒程序出现了异常的情况,使程序可以正确的处理这些情况。

语法结构:

raise [Exception类型(异常描述信息)]

例如输入性别时,输入的不是男也不是女的代码:

try:
    gender=input('请输入您的性别:')
    if gender!='男'and gender!='女':
        raise Exception('性别只能是男或女')
    else:
        print('您的性别是:', gender)
except Exception as e:
    print(e)

另外再看一个输入分数的程序,要求分数必须在0到100之间,否则抛出异常:

try:
    score=int(input('请输入分数:'))
    if 0<=score<=100:
        print('分数:', score)
    else:
        raise Exception('分数不正确')
except Exception as e:
    print(e)

运用同样的逻辑,我们可以编写一个程序来查看三条边的长度能否构成三角形:

try:
    a=int(input('请输入第一条边长:'))
    b=int(input('请输入第二条边长:'))
    c=int(input('请输入第三条边长:'))
    if a+b>c and a+c>b and b+c>a:
        print(f'三角形的边长为:{a},{b},{c}')
    else:
        raise Exception(f'{a}, {b}, {c}, 不能构成三角形')
except Exception as e:
    print(e)

常见异常类型

简单掌握一些常见的异常类型,就已经足够我们使用。

异常类型 描述说明

ZeroDivisionError

当除数为0时,引发的异常
IndexError 索引超出范围所引发的异常
KeyError 字典取值时Key不存在的异常
NameError 使用一个没有声明的变量时引发的异常
SyntaxError Python中的语法错误
ValueError 传入的值错误
AttributeError 属性或方法不存在的异常
TypeError 类型不合适引发的异常
IndentationError 不正确的缩进引发的异常

 

Pycharm程序调试

使用Pycharm可以方便地进行进行代码的调试:下面用一个简单的循环代码来进行演示:

i=1
while i<10:
    print(i)
    i+=1

如果已经对VS等IDE的使用有所了解,那么下面的调试控制方法都将是与C语言中的学习类似的。

第一步:设置断点

在代码每一行的行数的位置,左键或右键——设置断点,都可以在这一行代码处打上断点

 出现红点即设置成功,这是在调试过程中在运行到此行代码则暂停程序的标志。

第二步:进入调试窗口

进入调试窗口有三种方法,一是单击右上方的小虫子(bug)的图标:

二是对代码处单机右键,找到调试的选项(我这里下载了中文包,英文情况下是debug)

三就是快捷键 shift+F9

第三步:开始调试

先认识一下调试窗口的几个功能区块

再是程序控制窗口的介绍:

然后是调试控制窗口:

最后是程序调试窗口:

 

相关推荐

  1. C# 异常处理 暂时告一段落 开始窗体学习

    2024-05-02 17:56:07       44 阅读
  2. C#中Async异常处理

    2024-05-02 17:56:07       47 阅读
  3. C/C++ - 异常处理

    2024-05-02 17:56:07       51 阅读
  4. C++ 异常处理

    2024-05-02 17:56:07       39 阅读
  5. C++ 异常处理

    2024-05-02 17:56:07       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-02 17:56:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-02 17:56:07       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-02 17:56:07       87 阅读
  4. Python语言-面向对象

    2024-05-02 17:56:07       96 阅读

热门阅读

  1. spring ioc 容器加载过程 refresh() 方法详解

    2024-05-02 17:56:07       38 阅读
  2. golang:atomic.Pointer

    2024-05-02 17:56:07       35 阅读
  3. 中文输入法导致的高频事件

    2024-05-02 17:56:07       29 阅读
  4. CUDA内存管理

    2024-05-02 17:56:07       29 阅读