¶errors and exceptions
¶syntax errors
- 书写不当造成
一般显示 SyntaxError错误
¶exceptions
- 执行过程中检测到的错误
- 只是一些小问题,不影响程序运行的错误
1 | 10 * (1/0) |
¶handing exceptions
-
用try…except语句来捕捉异常错误
try后面接需要运行的语句
except后面接需要捕捉的异常错误,用自己的语言来描述这个错误 -
如果异常没有发生,则运行try后面的语句,如果异常发生,则运行except后面的语句
1 | #!/usr/bin/env python |
- 输出
1 | Please enter a number :qw |
- 一个except 子句可以将多个异常命名为一个元组
1 | except (NameError,TypeError,RuntimeError): |
- 如果有相同类或者基类,一个except子句是与一个异常想适配的handle_except_class
1 | class B(Execption): |
- 捕获详细的异常信息handle_except_sys
1 | #!/usr/bin/env python |
- 实例化参数handle_except_raise
1 | #实例化参数,在添加到异常中 |
- 发生在函数里面的异常也可以用try捕获handle_except_function
1 | #!/usr/bin/env python |
- 输出
1 | Handling run-time error division by zero |
¶raising exceptions
- raise 语句允许强制指定异常发生
1 | #有参数 |
- 确定一个异常是否被引发,但不处理
1 | try: |
¶user-defined exceptions
- 创建异常类来命名自己的异常usr_defined_exception
1 | #!/usr/bin/env python |
¶defining clean-up actions
- 在所有情况下被定义的清理动作define_clean_up_action_finally
1 | try: |
- try…except…else…finally语句连用define_clean_up_action_else
1 | #! /usr/bin/python3 |
- 输出
1 | the result is 2.0 |
- conclusion
try:后面接正确运行的语句,如果没有异常,则运行
except:后面接异常类型,自定义异常描述
finally:不论是否发生异常,都会运行
else:与其他语句中的用法相同,用在异常语句中,意味着异常不会发生
raise:异常引发语句
¶predefined clean-up actions
- with 语句处理异常
1 | for line in open("myfile.txt"): |