一、异常处理的基本概念

在Python编程中,异常(Exception)是指程序运行时发生的错误或意外情况。当Python遇到无法正常执行的代码时,会"抛出"(raise)一个异常。如果不进行处理,程序将终止并显示错误信息。
异常的作用简单说就是:

  • 防止程序崩溃,提高健壮性。
  • 提供处理错误的机制。

二、基础异常处理语法

2.1 语法

 try:
       可能会引发异常的代码
 except:
       如果检测到异常要执行的代码
 else:
       没有检测到异常要执行的代码
 finally:
       无论是否检测到异常,都会执行的代码
  • try中的是可能会引发异常的代码。
  • except根据自己的异常类型判断是否捕获这个异常,一个try可以跟多个except,一个except可以跟多个错误,但是如果except的异常类型与代码出现的异常不匹配,那么程序就会在异常语句挂掉。
  • finally在整个异常处理过程中只能有一个,可以用try - except - finally,也可以用try - finally。finally写在最后,无论错误是否发生都会被执行。
  • 一个try - except - finally 语句中只能有一个else,并且else必须在except后面,如果没有异常发生那就会执行else。

注意:可以单独使用try…finally…,也可以配合except等使用。

2.2 代码示例

代码示例一:

try:
	print(name)  # name未定义
except:
	print("这个是错误的哦!")

一般情况下try下面只放一行尝试执行的代码。try里面的代码检测出异常时,except才会被执行,如果try里面的代码没有被检测出异常,except下面的代码不会被程序执行。
执行结果:

这个是错误的哦!

代码示例二:

# name = 'PP'
try:
    print(name)
except Exception:
    print("这个是错误的哦!")
else:
    print("这里是else的代码,没有异常就会执行。")

代码示例三:

try:
    print(name)
except Exception:
    print("有异常会执行的!")
else:
    print("没有异常会执行的!")
finally:
    print("不管如何最后都要执行的!")

这边可以单独使用try…finally…,也可以配合except等使用。

2.3 raise抛出异常

raise 是Python中用于主动抛出异常的关键字。当程序遇到无法继续执行的错误情况时,可以使用 raise 来中断程序执行并抛出异常。

# e = Exception("主动抛出了一个异常")
# raise e

代码示例

def login():
    pwd = input("请输入您要输入的密码:")
    if pwd == '123456':
        return "密码输入成功"
    e = Exception("密码错误")
    raise e

try:
	print(login())
except Exception as e:
	print(e)

2.3 自定义异常

class MyCustomError(Exception):
	pass

# 使用
def example_function():
	raise MyCustomError("发生自定义错误!")
try:
	example_function()
except MyCustomError as e:
	print(f'捕获到自定义异常:{e}')

三、常见的Python内置异常

  • BaseException:所有异常的基类
  • Exception:常规错误的基类
  • IOError:输入/输出错误
  • ValueError:传入无效参数
  • TypeError:类型操作错误
  • IndexError:序列下标越界
  • KeyError:映射键不存在
  • ZeroDivisionError:除数为零错误
  • SyntaxError:解释器语法错误,这是一个唯一不在运行时发生的异常,在运行前解释器就会显示其错误

四、性能考量

过度的使用异常处理对性能也会有一定影响:

  • 异常处理比常规条件判断开销大
  • 应避免在频繁执行的循环中使用异常处理逻辑
  • 对于可遇见的错误条件,优先使用条件判断
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐