个人求职网站设计,重装wordpress,友情链接平台,百度推广和哪些网站有合作目录 1.try... except 结构 2. try... 多个except结构 3. try...except...else结构 4. try...except...finally结构 5. return语句和异常处理问题 5.1 异常处理前的 return 5.2异常处理后的 return 5.3 finally 块中的 return 6.常见的异常 1.try... except 结构 try except 是… 目录 1.try... except 结构 2. try... 多个except结构 3. try...except...else结构 4. try...except...finally结构 5. return语句和异常处理问题 5.1 异常处理前的 return 5.2异常处理后的 return 5.3 finally 块中的 return 6.常见的异常 1.try... except 结构 try except 是最常见的异常处理结构。结构如下 try:# 可能会引发异常的代码块result 10 / 0
except ExceptionType as e:# 处理异常的代码块print(f发生了异常: {e})try 块包含可能会引发异常的代码。如果在 try 块中的代码引发了异常Python 会跳过 try 块中余下的代码直接执行 except 块。 except 块用于捕捉和处理异常。你可以指定要捕获的异常类型也可以捕获所有异常类型。as e 用于获取异常实例并可以访问异常消息或其他信息。 执行的时候如果try块中没有引发异常,则跳过except块继续执行后续代码. 执行的时候如果try块中发生了异常,则跳过try块中的后续代码跳到相应的except块中处理异常异常处理完后继续执行后续代码。 2. try... 多个except结构 try 块配合多个 except 块可以处理不同类型的异常。每个 except 块负责处理特定类型的异常。 try:# 可能会引发异常的代码result int(not_a_number)
except ValueError as ve:# 处理 ValueError 异常print(f值错误: {ve})
except ZeroDivisionError as zde:# 处理 ZeroDivisionError 异常print(f除零错误: {zde})
except FileNotFoundError as fnfe:# 处理 FileNotFoundError 异常print(f文件未找到: {fnfe})
except Exception as e:# 捕获其他所有异常print(f其他异常: {e})具体到通用将最具体的异常类型放在前面更通用的异常类型放在后面。这确保特定的异常类型能被准确处理。 顺序重要except 块的顺序是重要的。Python 按顺序检查 except 块从上到下。如果上面的块能处理异常下面的块将不会执行。 通用异常Exception 用于捕获所有其他异常但最好先捕获已知的具体异常。 如下例子 try:value int(input(请输入一个整数: ))result 10 / value
except ValueError as ve:print(f输入无效: {ve})
except ZeroDivisionError as zde:print(f不能除以零: {zde})
except Exception as e:print(f发生了一个错误: {e})
else:print(f计算结果是: {result})
finally:print(结束处理)ValueError 处理输入转换错误ZeroDivisionError 处理除零错误Exception 捕获所有其他未特定处理的异常。else 块在没有异常时执行finally 块在 try 和 except 块之后总是执行。 3. try...except...else结构 try...except...else 结构用于更精确地控制异常处理和正常执行的代码块。else 块是在 try 块中的代码没有引发异常时执行的。这个结构可以帮助你在没有异常的情况下执行特定的代码从而提高代码的清晰度和可维护性。 try:# 可能会引发异常的代码result 10 / int(input(请输入一个整数: ))
except ZeroDivisionError as zde:# 处理 ZeroDivisionError 异常print(f除零错误: {zde})
except ValueError as ve:# 处理 ValueError 异常print(f输入错误: {ve})
else:# 没有异常时执行的代码print(f计算结果是: {result})
finally:# 无论是否发生异常都会执行的代码可选print(处理结束)else 块在 try 块中的代码没有引发异常时执行。else 块用于执行那些在没有异常的情况下需要运行的代码。它不会被执行到 except 块处理完所有异常之后才会执行。 4. try...except...finally结构 try...except...finally 结构用于在处理异常时确保某些代码始终被执行。这种结构的关键在于 finally 块它会在 try 块和 except 块执行完毕之后总是被执行无论是否发生异常。它通常用于资源管理和清理工作确保即使在发生异常的情况下也能完成必要的清理操作。 通常用来释放try块中申请的资源 try:# 尝试打开文件并读取内容file open(example.txt, r)content file.read()print(content)
except FileNotFoundError as e:# 处理文件未找到的异常print(f文件未找到: {e})
except IOError as e:# 处理其他 I/O 错误print(f文件读取错误: {e})
finally:# 确保文件始终被关闭try:file.close()except NameError:# 如果文件打开失败file 变量可能没有被定义passprint(文件处理完毕)finally 块无论是否发生异常finally 块中的代码都会被执行。这常用于清理资源如关闭文件、释放锁或关闭数据库连接确保这些操作总是被执行。 5. return语句和异常处理问题 return 语句用于从函数中返回值并结束函数的执行。异常处理则用于捕获和处理运行时错误防止程序崩溃。return 语句与异常处理的交互可以影响函数的行为特别是当异常发生时。 由于return有两种作用结束方法运行、返回值。我们一般不把return放到异常处理结构中而是放到方法最后. 5.1 异常处理前的 return 如果函数在执行过程中遇到异常return 语句在异常被捕获之前不会被执行。 def safe_divide(x, y):try:return x / yexcept ZeroDivisionError:return Cannot divide by zero.5.2异常处理后的 return except 块可以在捕获异常后使用 return 语句返回特定值。finally 块中的代码也可以使用 return但它会覆盖之前的 return。 def func(x):try:if x 0:raise ValueError(Negative value)return x * 2except ValueError:return Invalid inputfinally:print(Cleanup code) # 总会执行5.3 finally 块中的 return except 块可以在捕获异常后使用 return 语句返回特定值。finally 块中的代码也可以使用 return但它会覆盖之前的 return def example():try:return 1finally:return 2 # 覆盖前面的 returndef process_value(x):try:if x 0:raise ValueError(Negative value not allowed.)return x * 10except ValueError as e:return fError: {e}finally:print(Finished processing.)# 使用示例
print(process_value(5)) # 输出: 50
print(process_value(-1)) # 输出: Error: Negative value not allowed.6.常见的异常 异常名称 说明 ArithmeticError 所有数值计算错误的基类 AssertionError 断言语句失败 AttributeError 对象没有这个属性 BaseException 所有异常的基类 DeprecationWarning 关于被弃用的特征的警告 EnvironmentError 操作系统错误的基类 EOFError 没有内建输入,到达EOF 标记 Exception 常规错误的基类 FloatingPointError 浮点计算错误 FutureWarning 关于构造将来语义会有改变的警告 GeneratorExit 生成器(generator)发生异常来通知退出 ImportError 导入模块/对象失败 IndentationError 缩进错误 IndexError 序列中没有此索引(index) IOError 输入/输出操作失败 KeyboardInterrupt 用户中断执行(通常是输入^C) KeyError 映射中没有这个键 LookupError 无效数据查询的基类 MemoryError 内存溢出错误(对于Python 解释器不是致命的) NameError 未声明/初始化对象 (没有属性) NotImplementedError 尚未实现的方法 OSError 操作系统错误 OverflowError 数值运算超出最大限制 OverflowWarning 旧的关于自动提升为长整型(long)的警告 PendingDeprecationWarning 关于特性将会被废弃的警告 ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象 RuntimeError 一般的运行时错误 RuntimeWarning 可疑的运行时行为(runtime behavior)的警告 StandardError 所有的内建标准异常的基类 StopIteration 迭代器没有更多的值 异常名称 说明 SyntaxError Python 语法错误 SyntaxWarning 可疑的语法的警告 SystemError 一般的解释器系统错误 SystemExit 解释器请求退出 TabError Tab 和空格混用 TypeError 对类型无效的操作 UnboundLocalError 访问未初始化的本地变量 UnicodeDecodeError Unicode 解码时的错误 UnicodeEncodeError Unicode 编码时错误 UnicodeError Unicode 相关的错误 UnicodeTranslateError Unicode 转换时错误 UserWarning 用户代码生成的警告 ValueError 传入无效的参数 Warning 警告的基类 WindowsError 系统调用失败 ZeroDivisionError 除(或取模)零 (所有数据类型)