python代码异常捕获

异常

程序在运行时,如果python 解释器 遇到一个错误, 会停止程序运行,并提示一些错误信息忙着就是异常

程序停止执行并且提示错误信息 这个动作,抛出异常(raise 关键字)
捕获异常:程序遇到错误,默认动作是终止代码程序的执行,遇见异常字后,可以使用 异常捕获(exception captures),让程序代码继续运行,不会终止运行(重点)

异常捕获[重点]

基本语法

try:
    书写可能发生异常的代码
except# 任何类型的一场都可以捕获
	发生异常执行的代码
    
    
try:
    书写可能发生异常的代码
except 异常类型:   # 只能捕获指定类型异常
	发生异常执行的代码

code:

# 第一种情况
try:
     num = input('please enter an integer number:')
     num = int(num)
     print(num)
except:
     print('please enter an right integer number!')#
print('the rest of code that follows can continue execute!')



# 第二种情况
try:
    num = input('please enter an integer number:')
    num = int(num)
    print(num)
except ValueError:
    print('an anomaly has occurred , please enter an right number!')
 

# 第二种情况举例,当分母为 0 时报错,运行终止,只有错误符合数值类型错误类型才会向下执行
try:
    num = input('please enter an integer number:')
    num = int(num)
    print(num)
    a = 10 / num
    print(f'a: {a}')
except ValueError:
    print('an anomaly has occurred , please enter an right number!')


运行结果:

# 第一种情况运行结果
please enter an integer number:jg    # 输入的是字符,而不是整数
please enter an right integer number!
the rest of code that follows can continue execute!

# 第二种情况(指定异常)运行结果
please enter an integer number:kd    # 输入字符类型
an anomaly has occurred , please enter an right number!


# 第二种情况举例,当分母为0时报错,运行终止,只有错误符合数值错误类型才会向下执行
please enter an integer number:0  # 分母为0,不属于型错误(ZeroDivisionError),因此报错
0
Traceback (most recent call last):
  File "C:\Users\fighting!\Desktop\py_leaning\异常\py_异常捕获的基本语法.py", line 14, in <module>
    a = 10 / num
        ~~~^~~~~
ZeroDivisionError: division by zero
注意: ZeroDivisionError 不属于 ValueError指定类型错误

捕获指定类型的异常

好处:可以针对不同类型错误,进行单独的代码处理
try:
    书写可能发生异常的代码
except 异常类型1# 只能捕获指定类型异常
	发生异常1执行的代码
except 异常类型2:
    发生异常2执行的代码
except 异常类型...:
    发生异常3执行的代码

code:

try:
    num = input('please enter an integer number:')
    num = int(num)
    print(num)
    a = 10 / num
    print(f'a: {a}')
except ValueError:
    print('an anomaly has occurred , please enter an right number!')
except ZeroDivisionError:
    print('除数不能为0!')

运行结果:

please enter an integer number:0
0
除数不能为0

异常捕获的完整版本

完整版本中不是每次都全部书写,根据需要书写
try:
    可能发生异常的代码
except 异常类型1:
    发生异常类型1执行的代码
# Exception 是常见异常的父类, 这里书写 Exception ,可以捕获常见的所有异常,这个变量是一个异常类的对象,print(变量)的时候可以打印异常信息
except Exception as 变量:
	发生异常执行的代码
else:
    没有发生异常所执行的代码
finally:
    不管有没有发生异常都要执行的代码
try:
    可能发生异常的代码
except Exception as e:
	发生异常执行的代码

code

try:
    num = input('please enter an integer number:')
    num = int(num)
    print(num)
    a = 10 / num
except Exception as e:
    print(f'错误信息为{e},请输入正确数字!')   # 发生异常执行
else:
    print(f'a: {a}')  # 没有发生异常执行
finally:
    print('The end!')  # 不管有没有异常都执行

运行结果

please enter an integer number:10
10
a: 1.0
The end!


please enter an integer number:abc
错误信息为invalid literal for int() with base 10: 'abc',请输入正确数字!
The end!


please enter an integer number:0
0
错误信息为division by zero,请输入正确数字!
The end!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值