我们来先看一个简单例子,会让用户连续输入数字,并将这些数字添加到一个列表中,直到用户停止输入为止:
list_num = []
while True:
try:
num = input('请输入你的数字')
if num == 'q':
break
num = int(num)
list_num.append(num)
except ValueError:
print("无效输入,只能输入数字或'q'退出。")
print("您输入的数字列表是:", list_num)
这里关于代码的逻辑和实现方法不做赘述,着重记录下try except的结构用处
在Python编程中,try语句是用来实现异常处理的关键字,它标志着一段可能会抛出异常的代码块。当你在程序中执行可能引发异常的操作时,你可以将这部分代码放在try块中。如果在执行try块中的代码时发生了异常(如除以零、文件未找到等),程序不会立即终止,而是会跳转到相应的except块去处理这个异常。下面是一个简单的try...except结构的示例:
try:
# 可能会抛出异常的代码
result = 1 / 0 # 这里会发生除以零异常(ZeroDivisionError)
except ZeroDivisionError:
# 当ZeroDivisionError发生时,执行这里的代码块
result = "无法执行除法运算,因为除数为零"
print(result)
在这个例子中,尝试执行除以零操作会导致一个ZeroDivisionError异常。由于这段代码在try块内,当异常发生时,程序会跳转到对应的except ZeroDivisionError:块,并执行其中的代码,而不是让程序崩溃。这样就可以优雅地处理异常,让程序在遇到错误时也能有条不紊地执行后续逻辑或给出友好的错误提示。
在Python中,except关键字后面可以接特定的异常类,也可以不接异常类来捕获所有类型的异常。常见的Python内置异常有很多,包括但不限于以下几种:
1. Exception:所有异常的基类,捕获所有类型的异常,通常不建议这样做,除非你知道确实需要捕获所有异常并做出统一处理。
2. ArithmeticError:算术运算错误的基类,如:•OverflowError:数值运算超出极限。•ZeroDivisionError:除数为零。
3. AssertionError:断言语句失败。
4. AttributeError:尝试访问或修改对象不存在的属性时抛出。
5. IOError(在Python 2中)或OSError(在Python 3中):输入/输出操作错误,如文件操作错误。
6. FileNotFoundError:在Python 3中,找不到文件或目录时抛出。
7. ImportError:导入模块时出现问题。
8. KeyError:在字典中查找不存在的键时抛出。
9. TypeError:传入函数的参数类型不符合要求时抛出。
10. ValueError:传入的参数值不在预期范围内时抛出,例如,转换字符串为整数时,字符串格式不对。
11. KeyboardInterrupt:用户按下中断键(Ctrl+C)时触发。等等...
不需要全部记忆,但在编程过程中,根据具体操作可能出现的问题,针对性地处理常见异常即可。当编写代码时,可以查阅Python官方文档了解与你代码相关可能出现的异常类型,有针对性地进行捕获和处理。在实际开发中,一般遵循的原则是尽量精确地捕获可能发生的异常,避免使用过于宽泛的except Exception语句。