异常概念
程序在运行时,如果解释器遇到一个错误,就会停止程序的执行,并且提示一些错误信息,这就是异常。 程序停止执行并且提示错误信息这个动作,我们通常称之为:抛出(raise)异常
捕获异常
捕获异常简单形式: try…except
如果对某些代码的执行不能确定是否正确,可以增加try(尝试)捕获异常 语法格式
try :
语句
except 异常名称:
出现异常的处理
如果try后面的语句可以执行,则不执行except语句 如果出现异常,则执行except语句
常用异常名称
BaseException:所有异常错误 Exception:常规异常错误 ZeroDivisionError:除0异常错误 ValueError:值类型错误
实例:
try :
num = int ( input ( "请输入整数:" ) )
except ValueError:
print ( "输入有误,请重新输入" )
捕获多个异常格式:try…except…except
try :
尝试执行的代码
except 错误类型:
出现错误的处理
except 错误类型2 :
pass
try :
尝试执行的代码
except ( 错误类型1 , 错误类型2 ) as 名称(自定义):
出现错误的处理
. . .
实例:
def number ( n) :
try :
num = int ( input ( "请输入整数:" ) )
print ( num)
result = num / n
print ( result)
except ValueError:
print ( "输入有误,请重新输入" )
except ZeroDivisionError:
print ( "发生除0错误!" )
number( 0 )
捕获异常格式:try…except…else
try :
执行代码
except :
发生异常时执行的代码
else :
没有异常时执行的代码
实例
def divide ( x, y) :
try :
result = x / y
except ZeroDivisionError:
print ( "除数为0,请重新输入" )
else :
print ( f"结果为: { result} " )
num = int ( input ( "请输入数字:" ) )
n = int ( input ( "请输入大于0的整数:" ) )
divide( num, n)
捕获异常格式:try…except…finally
try :
执行代码
except 异常名称:
发生异常时执行的代码
finally :
无论是否存在错误,都会执行finally 内的代码
实例:
def f1 ( num) :
try :
return int ( num)
except ValueError as e1:
print ( e1)
finally :
print ( "执行结束" )
n = input ( "请输入数字:" )
f1( n)
捕获未知错误:
except Exception as result:
print ( result)
主动抛出异常
def f2 ( num) :
if not isinstance ( num, int ) :
raise Exception( '该参数不是一个整型类型' )
if num < 5 :
raise Exception( '该参数小于5' )
def f3 ( * args) :
if len ( args) <= 5 :
raise Exception( '参数个数小于等于5' )
if __name__ == "__main__" :
f3( 1 , 2 , 3 , 4 , 5 )
assert断言
基本格式:
assert bool_expression [ , arguments]
如果 bool_expression 为False ,则会抛出arguments 这个自定义异常
如果 bool_expression 为True , 则不会抛出arguments这个自定义异常
实例
def f2 ( num) :
assert isinstance ( num, int ) , '该参数不是一个整型类型'
assert num >= 5 , '该参数小于5'
def f3 ( * args) :
assert len ( args) > 5 , '参数个数小于等于5'
if __name__ == "__main__" :
f3( 1 , 2 , 3 , 4 , 5 )