python【系列教程】之异常处理

 一、使用try....except 捕获异常

 


  
  1. import sys
  2. try:
  3. a = int(sys.argv[1])
  4. b = int(sys.argv[2])
  5. c = a/b
  6. print('您输入的两个数相除的结果是:',c)
  7. except IndexError:
  8. print('索引错误,运行程序时输入的参数个数不够')
  9. except ValueError:
  10. print('数值错误,程序只能接收整数参数')
  11. except ArithmeticError:
  12. print('算术错误')
  13. except Exception:
  14. print("未知异常")
  15. #多异常捕获
  16. import sys
  17. try:
  18. a = int(sys.argv[1])
  19. b = int(sys.argv[2])
  20. c = a/b
  21. print('您输入的两个数相除的结果是:',c)
  22. except (IndexError,ValueError,ArithmeticError):
  23. print('程序发生了数组越界,数字格式异常,算术异常之一')
  24. except Exception:
  25. print("未知异常")
  26. #访问异常信息
  27. def foo():
  28. try:
  29. fis = open("a.txt")
  30. except Exception as e:
  31. print(e.args)
  32. print(e.errno)
  33. print(e.strerror)
  34. foo()
  35. # finally 的使用
  36. s = input('请输入除数:')
  37. try:
  38. result = 20 / int(s)
  39. print('20 除以%s的结果是:%g' % (s, result))
  40. except ValueError:
  41. print("值错误")
  42. except ArithmeticError:
  43. print("算术错误")
  44. else:
  45. print("没有出现异常")
  46. finally:
  47. print("资源回收")
  48. # 异常处理嵌套
  49. # 使用raise引发异常
  50. """raise:单独一个raise,该语句引发当前上下文中捕获的异常,比如在except块中,
  51. 或者默认引发RuntimeError异常。
  52. raise 异常类:raise后带一个异常类,该语句引发指定异常类的默认实例
  53. raise 异常对象:引发指定的异常对象
  54. """
  55. # 自定义异常类
  56. class AuctionException(Exception): pass
  57. # traceback模块来处理异常传播轨迹,使用traceback可以方便的处理python的异常传播
  58. # 轨迹。导入traceback模块之后,traceback提供了两个常用方法
  59. """
  60. traceback.print_exc() : 将异常传播轨迹信息输出到控制台或指定文件中
  61. format_exc() : 将异常传播轨迹信息转换成字符串
  62. """
  63. import traceback
  64. class SelfException(Exception): pass
  65. def main():
  66. print("abc")
  67. try:
  68. main()
  69. except Exception as e:
  70. #捕获异常,并将异常传播到控制台
  71. traceback.print_exc()
  72. #捕获异常,并将异常信息输出到指定的文件中
  73. traceback.print_exc(file=open('log.txt', 'a'))

 

 

文章来源: blog.csdn.net,作者:血煞风雨城2018,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_31905135/article/details/100667944

(完)