异常捕获

【一】异常捕获

1.1 - 常见异常分类

Python中的异常可以分为以下几类:

  1. 内建异常(Built-in Exceptions):这些异常是Python内置的,用于表示常见的错误情况。例如:

    • SyntaxError:语法错误,通常是由于代码不符合Python语法规则导致的。
    • TypeError:类型错误,通常是由于操作符或函数应用于错误类型的对象导致的。
    • NameError:名称错误,通常是由于引用了不存在的变量或函数名导致的。
    • ValueError:值错误,通常是由于传递给函数的参数具有无效的值导致的。
    • IndexError:索引错误,通常是由于访问列表、元组或字符串等序列时使用了无效的索引导致的。
  2. 标准库异常(Standard Exceptions):这些异常由Python标准库提供,用于表示特定的错误情况。例如:

    • FileNotFoundError:文件未找到错误,通常是由于试图打开不存在的文件导致的。
    • ZeroDivisionError:零除错误,通常是由于除法操作中除数为零导致的。
    • KeyError:键错误,通常是由于在字典中使用不存在的键导致的。
    • ImportError:导入错误,通常是由于导入模块失败或找不到指定的模块导致的。
  3. 自定义异常(Custom Exceptions):除了使用内建异常和标准库异常外,Python还允许用户自定义异常来表示特定的错误情况。用户可以通过继承Exception类创建自定义异常类,并根据需要添加额外的属性和方法。

1.2 - 异常捕获处理

处理异常的方法是使用try-except语句捕获异常并进行处理。try块中的代码用于尝试执行可能引发异常的操作,而except块中的代码用于处理捕获到的异常。可以使用多个except块来处理不同类型的异常,或者使用一个except块来捕获所有异常。

下面是一个示例,演示了如何捕获和处理异常:

try:  
    int('a')  
      
except Exception as e:  
    print('error')

       or

try:  
    int('a')  
  
except ValueError as e:  
    print('error')

try-except语法用于捕获和处理异常。下面是try-except语句的基本语法结构:

try:
    # 可能引发异常的代码
    # ...
except ExceptionType1:
    # 处理类型为ExceptionType1的异常
    # ...
except ExceptionType2:
    # 处理类型为ExceptionType2的异常
    # ...
except:
    # 处理其他类型的异常

1.2.1 异常分支语句

try:  
    int('1')  
  
except ValueError as e:  
    print('error')  
  
else:  
    print('转换成功')  # 转换成功

1.2.2 finally 语句

finally是一个可选的关键字,用于定义一个代码块,无论是否发生异常,该代码块中的代码都会被执行。finally块通常用于确保在发生异常或不发生异常的情况下都执行某些清理操作,例如关闭文件、释放资源等。

以下是try-except-finally语句的基本语法结构:

try:
    # 可能引发异常的代码
    # ...
except ExceptionType1:
    # 处理类型为ExceptionType1的异常
    # ...
except ExceptionType2:
    # 处理类型为ExceptionType2的异常
    # ...
except:
    # 处理其他类型的异常
    # ...
finally:
    # 无论是否发生异常,都会执行的代码块
try:  
    int('1')  
  
except ValueError as e:  
    print('error')  
  
else:  
    print('转换成功')  # 转换成功  
  
finally:  
    print('执行完成最后输出')  # 执行完成最后输出

1.2.3 自定义异常语句 raise

raise关键字用于引发异常。通过使用raise语句,可以在程序中明确地触发异常,以便提供有关错误或异常情况的信息。

raise语句的基本语法如下:

def divide(x, y):  
    if y == 0:  
        raise ValueError("除数不能为零")  
    return x / y  
  
  
try:  
    result = divide(10, 0)  
    print("结果:", result)  
except ValueError as e:  
    print("发生错误:", str(e))

1.2.4 条件判断触发异常 assert

assert关键字用于检查某个条件是否为真。如果条件为假,assert语句会引发一个AssertionError异常,并提供一个可选的错误消息。

assert语句的基本语法如下:

assert condition, "Error message"

在上述语法中,condition是要检查的条件,如果条件为假,则引发AssertionError异常。"Error message"是一个可选的错误消息,用于提供关于断言失败的额外信息。

以下是一个示例,演示了如何使用assert语句:

def index(x, y):  
    assert y != 0, '除数不能为0'  
    res = x / y  
    return res  
  
  
# AssertionError  
res1 = index(10, 0)  
print(res1)  # 除数不能为0
posted @ 2023-12-06 16:09  Unlucky  阅读(35)  评论(0)    收藏  举报