【Python】学习笔记 -- CH7. 异常处理

CH7. 异常处理

Bug的由来及分类

  • Bug是指计算机程序/机器中的故障
    • 语法错误
    • 方法调用错误
    • 思路不清
    • 外部输入处理错误

Python中的异常处理

try-except

  • 语法结构

    • try:

      ​ 可能会抛出异常的代码

      except 异常类型:

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

    • try:

      ​ 可能会抛出异常的代码

      except 异常类型A:

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

      except 异常类型B:

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

try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
    print(f'{num1} / {num2} = {result}')
except ZeroDivisionError:
    print('除数为0!')
except ValueError:
    print('整数输入错误!')
except BaseException:
    print('未知异常!')

'''
请输入一个整数:10
请输入另一个整数:2
10 / 2 = 5.0

请输入一个整数:10
请输入另一个整数:0
除数为0!

请输入一个整数:A
整数输入错误!
'''

try-except-else<-finally>

  • 语法结构为

    • try:

      ​ 可能会抛出异常的代码

      except 异常类型:

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

      else:

      ​ 没有抛出异常要执行的代码

      finally:

      ​ 无论是否产生异常都要执行的代码

try:
    num1 = int(input('请输入一个整数:'))
    num2 = int(input('请输入另一个整数:'))
    result = num1 / num2
except ZeroDivisionError:
    print('除数为0!')
except ValueError:
    print('整数输入错误!')
except BaseException:
    print('未知异常!')
else:
    print(f'{num1} / {num2} = {result}')
finally:
    print('程序执行结束...')
    
'''
输入一个整数:10
请输入另一个整数:5
10 / 5 = 2.0
程序执行结束...

请输入一个整数:10
请输入另一个整数:0
除数为0!
程序执行结束...

请输入一个整数:A
整数输入错误!
程序执行结束...
'''

raise

  • 抛出一个异常,从而提醒程序出现了异常情况,程序能够正确地处理这些异常
  • raise关键字的语法结构为
    • raise [Exception类型(异常描述星系)]
try:
    gender = input('请输入您的性别:')
    if gender != '男' and gender != '女':
        raise Exception('性别只能是男或者女')
    else:
        print('您的性别是:', gender)
except Exception as e:
    print(e)

'''
请输入您的性别:男 
您的性别是: 男

请输入您的性别:no
性别只能是男或者女
'''

Python中常见的异常类型

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

代码调试方法

  • 设置断点

  • Debug调试运行代码

  • 异常处理机制

异常处理实战

实战1

  • 编写程序接收用户输入分数信息
    • 如果分数在0-100之间,输出成绩。如果成绩不在该范围内,抛出异常信息,提示分数必须在0-100之间
try:
    score = int(input('请输入分数:'))
    if score < 0 or score > 100:
        raise Exception("分数不正确,必须在0~100之间")
    else:
        print(f'分数为:{score}')
except Exception as e:
    print(e)

实战2

  • 编写程序实现组成三角形的判断
    • 判断三个变量是否能构成一个三角形,如果不能则抛出异常Exception,显示异常信息,“a,b,c不能构成三角形”,如果可以构成则显示三角形三个边长
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={a} b={b} c={c}')
    else:
        raise Exception(f'{a},{b},{c}不能构成三角形')
except Exception as e:
    print(e)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值