Python---异常捕获,模块调用

本文围绕Python异常处理展开,介绍了异常的概念,即程序运行时遇到错误会停止并提示信息。阐述了使用try-except代码块捕获异常的方法,包括简单异常捕获、捕获指定错误及未知错误等。还讲解了异常的传递、抛出并捕获异常,以及断言的使用,以保证程序的健壮性和稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.异常
程序在运行的时候,如果python解释器遇到一个错误,会停止程序的执行,并且提示一些错误的信息,这就是异常。
我们在程序开发的时候,很难将所有的特殊情况都处理,通过异常捕获可以针对突发事件做集中处理,从而保证程序的健壮性和稳定性

在程序开发中,如果对某些代码的执行不能确定(程序语法完全正确)
可以增加try来捕获异常。

Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。如果编写了处理该异常的代码,程序继续运行;如果未对异常进行处理,程序将停止,并显示一个traceback(回溯),其中包含有关异常的报告。
异常是使用try-expect代码块处理的。try-except代码块让Python执行指定的操作,同时告诉Python发生异常时怎么办。使用了try-except代码块时,即使出现异常,程序也会被处理然后正常运行:显示我们编写好的友好错误信息,而不是令用户迷惑的traceback(回溯)。

1.1 try 简单异常捕获
try:
尝试执行的代码
except:
出现错误的处理

示例:编写简单代码段,无语法错误,并使其产生异常
num = int(input(‘please input a num:’))
一个简单的交互式变量定义,要求输入的必须为整数

当输入的不是整数类型时,就会产生报错,后面的代码无法执行,但是通过错误类型,可对其进行抓取,让程序继续执行起来

try:
num = int(input(‘please input a num:’))
except:
print(‘please input a right num:’)
#无论输入是否正确,都会继续执行下面的语句
print ‘*’ * 50

1.2 捕获指定错误及未知错误
当python解释器抛出异常时,最后一行错误信息的第一个单词,就是错误类型,可通过指定异常类型,对其进行捕获,从而决定下一步的执行
语法:
try:
尝试执行的代码
except 错误类型1:
针对错误类型1,对应的代码处理
except 错误类型2:
针对错误类型2,对应的代码处理

示例:
1.提示用户输入一个整数
2.使用10来除以这个整数

try:
num = int(input(‘请输入一个整数:’))
result = 10 / num
print(result)
except ZeroDivisionError:
print(‘0不能做除数’)
except ValueError:
print(‘输入的值不是合法的整数:’)
#我们无法预见所有的程序将会出现的非语法性错误,因此需要借由except Exception as 捕获未知的错误
except Exception as r:
print(‘未知错误 %s’ %(r))
#无论是否异常,都会执行的代码
finally:
print(‘finish’)
except Exception

1.3 正确输出与最终输出
try:
尝试执行的代码
except 错误类型1:
针对错误类型1,对应的代码处理
except 错误类型2:
针对错误类型2,对应的代码处理
except Exception as xx:
处理代码
else:
#没有出现异常才执行的代码
print (‘Execute successfully’)
finally:
#无论是否异常,都会执行的代码
print (‘End’)

1.4 异常的传递
当函数/方法执行出现异常,会将异常传递给函数调用的一方,如果传递到主程序,依旧没有异常处理,程序才会终止,可以在主程序中增加异常捕获,而在主函数中调用其他函数,只要出现异常,都会传递到主函数的异常捕获中,这就不需要在代码中增加大量的异常捕获,能够保证代码简洁。

示例:

函数的错误:一级一级的去找,最终会将异常传递到主函数里去的

def demo1():
return int(raw_input('Please input a num: '))

def demo2():
return demo1()

print demo2()

#对其异常进行捕获:
def demo1():
return int(input(‘请输入整数:’))

def demo2():
return demo1()

try:
print(demo2())
except Exception as r:
print(‘未知错误 %s’ %r)
print(demo2())

1.5 抛出异常并捕获
为了满足一些限定需求,有时需要进行主动的对异常的抛出,并对其进行捕获操作
示例:
提示用户输入密码 如果长度小于8 就抛出异常

def input_passwd():
# 1.提示用户输入密码
pwd = input(‘请输入密码:’)
# 2.判断密码的长度
if len(pwd) >=8:
return pwd
# 3.如果<8就主动抛出异常
print(‘主动抛出异常’)
#a.创建异常对象
ex = Exception(‘密码长度不够’)
#b.主动抛出
raise ex

注意:只抛出异常而不捕获异常 代码会出错

try:
print(input_passwd())
except Exception as re:
print(re)

1.6 断言
python assert 断言句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助。
断言:可理解为提前预言,让人更好的知道错误原因
def func(num,div):
return num/div

print(func(10,0))
可以通过断言进行预见
def func(num,div):
assert (div !=0),‘div 不能等于0’
return num/div

print(func(10,0))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值