Python--异常处理

Python--异常处理

  • 一、异常
  • 二、异常处理语句
    • 1、try...except语句
    • 2、try...except...else语句
    • 3、try...except...finally语句
    • 4、raise语句抛出异常
  • 三、assert断言

一、异常

程序运行过程中出现的错误,统称为“异常”。

二、异常处理语句

常见异常类型
Python--异常处理_第1张图片

1、try…except语句

语法格式:

try:
    block1:
except [ExceptionName [as alias]]:
    block2

参数说明:

block1:可能出现错误的代码块
ExceptionName [as alias]:可选参数,用于指定要捕获的异常。其中,ExceptionName 表示要捕获的异常名称,如果在其右侧加上as alias则表示为当前的异常指定一个别名,通过该别名,可以记录异常的具体内容。
block2:进行异常处理的代码块。这里可以输出固定的提示信息,也可以通过别名输出异常的具体内容。

在使用try…except捕获异常时,如果在except后面不指定异常名称,则表示捕获全部异常。

例1:

try:
    num = int(input('请输入一个非零整数:'))
    res = 10 / num
except:
    print('输入的数值错误!')

#输出
请输入一个非零整数:0
输入的数值错误!

例2:

string = 'hello'
try:
    ch = string[8]
except IndexError as e:  #为IndexError异常起一个别名 
    print(e) #打印异常的具体内容

#输出
string index out of range

2、try…except…else语句

try…except…else语句是在try…except语句的基础上加了else子句,用于指定当try语句块中没有发现异常时要执行的语句块。当try语句中发现异常时,该语句块中的内容将不被执行。

例如:

try:
    num = int(input('请输入一个非零整数:'))
    res = 10 / num
except:
    print('输入的数值错误!')
else:
    print(f"10除{num}的结果是{res}")

#输出
请输入一个非零整数:2
102的结果是5.0

3、try…except…finally语句

语法格式:

try:
    block1:
except [ExceptionName [as alias]]:
    block2
finally:
    block3

try…except…finally语句中无论是否有异常,都会执行block3语句块。

#有异常产生
string = 'hello'
try:
    ch = string[8]
except IndexError as e: # 未捕获到异常,程序直接报错
    print(e)
finally:
    print('无论是否有异常,我都会执行!')

#输出
string index out of range
无论是否有异常,我都会执行!
#无异常产生
string = 'hello'
try:
    ch = string[1]
except IndexError as e: # 未捕获到异常,程序直接报错
    print(e)
finally:
    print('无论是否有异常,我都会执行!')

#输出
无论是否有异常,我都会执行!

4、raise语句抛出异常

如果某个函数或方法产生异常,但不想再当前函数或方法中处理这个异常,则可以使用raise语句在函数或者方法中抛出异常。

语法格式:

raise [ExceptionName [reason]]

ExceptionName [reason]为可选参数,用于指定抛出的异常名称以及异常信息的相关描述。如果省略,就会把当前的错误原样抛出。

try:
    a = input("输入一个数:")
    
    #判断用户输入的是否为数字
    if(not a.isdigit()):
        raise ValueError("a 必须是数字")
    print('Test') #raise后面的语句不会执行
except ValueError as e:
    print("引发异常:",repr(e))

#输出
输入一个数:k
引发异常: ValueError('a 必须是数字')

三、assert断言

语法格式:

assert expression [, arguments]
def test(num):
    value = int(num)
    assert value > 0, "a超出范围" #使用asset断言抛出异常
    print(value)

#捕获异常
try:
    test(-1)
except AssertionError as e:
    print(e)

#输出
a超出范围

你可能感兴趣的:(Python,python,开发语言)