Python基础-异常处理
python的异常处理机制,由try,except,raise,else,finally关键字构成
异常基本用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 """ python 异常关键字 try except else finally raise try: statement.. (raise...) except EX: statement else: statement finally: statement except 块可以多个 捕获相应的异常后进入相应的except块 父类放在最后 else 在主代码没有异常的情况下继续需要执行的代码 finally 是否有异常最终都会执行 python 异常都继承BaseException 主要子类为Exception 自定义需要继承Exception """ def divide (n) : try : a = 10 b = 10 / n print("divide result:" , b) except TypeError: print("type error..." ) except ArithmeticError: print("arithmetic error ..." ) else : print("this is else block" ) finally : print("this is finally block" ) print("-----------------------" ) divide("haha" ) divide(0 ) divide(2 ) """ python 也可以同时捕获多个异常 """ def divide_two (n) : try : a = 10 b = 10 / n print("divide result:" , b) except (TypeError, ArithmeticError): print("some error..." ) divide_two(0 ) """ 访问异常信息 可以直接打印异常信息 """ def divide_three (n) : try : a = 10 b = a / n print("divide result:" , b) except Exception as e: print(e.args) print(e) print(str(e)) divide_three(0 ) """ finally 不执行的情况 在try或者except块中使用了 退出解释器的方法 finally块会不执行 应避免这种情况 """ import osdef divide_three (n) : try : a = 10 b = a / n print("divide result:" , b) os._exit(1 ) except Exception as e: print("this is error block" ) os._exit(1 ) finally : print("this is finally" ) divide_three(2 )
raise用法以及自定义异常 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 """ raise 引发异常 每次只能引发一个异常实例 raise 单独使用,后面也可以跟着异常类或者异常实例 """ def raise_test (n) : if n == 1 : raise elif n == 2 : raise TypeError elif n == 3 : raise ValueError("this is value error" ) else : print("no error" ) def main_test (m) : try : raise_test(m) except Exception as e: print("Error:" , str(e)) main_test(1 ) """ 自定义异常 继承Exception或者Exception子类 """ class MyError (Exception) : pass def myError_test (n) : if n == 1 : raise MyError("this is my error" ) def my_error (m) : try : myError_test(m) except Exception as e: print(e) raise my_error(1 )