1、错误处理
语法错误( SyntaxError )
- for 语句后面没有加 :(冒号)
- 语句之间的缩进错误
- 没有加 ()
- ……
运行时的错误( Traceback 开头 )
- ZeroDivisionError:将 0 作为除数
- TypeError:定义两个不同类型的变量,然后使用 + 进行计算
- NameError:输出了还没有定义的变量
- IndexError:在使用序列(列表、元组等),指定的索引超出了列表的索引范围
- KeyError:指定不存在的键访问字典
- ……
2、异常处理语句
try…except 语句
将可能产生异常的代码放在 try 语句块中,将处理异常的代码放在 except 语句块中。
当执行程序时,如果 try 中的代码出现错误,就会执行 except 中的代码。try: block1 except [ExceptionName]: block2
- ExceptionName:表示要捕获的异常,为可选参数。(如果不指定异常名称,则表示捕获所有异常)
while True: try: num = int(input()) result = 100 / num print(resultl) exit() except ZeroDivsionError: print("error!!") except ValueError: print('no num') except Exception as e: # 为 Exception 异常其设置别名 print(e) except (ZeroDivisionError, ValueError) as e: # 设置多个异常的共同别名 print(e)
try…except…else 语句
如果 try 语句中没有出现任何异常情况,就会执行 else 语句块中的代码
try…except…finally 语句
在进行异常处理时,完整的异常处理应该包括 finally 语句。
通常情况下,不论程序中是否存在异常,都会执行 finally 中的代码
raise 语句
自己抛出异常
def num_cal(): book = int(input()) student = int(input()) if book < student: raise ValueError('aaa') try: num_cal() except ValueError as e: print(e) # 输出 raise 语句中的内容
3、程序调试
Python 提供了 assert(断言)语句调试程序,可以在条件不满足程序运行的情况下直接返回错误
assert expreession [, arguments]
- expression:条件表达式。( 判断程序 True / False )
- argument:可选参数,用于对条件进行描述
等价于:
if not expression: raise AssertionError(arguments)
e.g.:
def num_cal(): book = int(input()) student = int(input()) assert book >= student, 'aaa' # 异常则抛出 AssertionError 错误 nnum_cal()