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

举报
小米粒-biubiubiu 发表于 2020/12/03 01:11:37 2020/12/03
【摘要】  一、使用try....except 捕获异常   import systry: a = int(sys.argv[1]) b = int(sys.argv[2]) c = a/b print('您输入的两个数相除的结果是:',c)except IndexError: print('索引错误,运行程序时输入的参数个数不够')except ValueError: pri...

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

 


      import sys
      try:
       a = int(sys.argv[1])
       b = int(sys.argv[2])
       c = a/b
       print('您输入的两个数相除的结果是:',c)
      except IndexError:
       print('索引错误,运行程序时输入的参数个数不够')
      except ValueError:
       print('数值错误,程序只能接收整数参数')
      except ArithmeticError:
       print('算术错误')
      except Exception:
       print("未知异常")
      #多异常捕获
      import sys
      try:
       a = int(sys.argv[1])
       b = int(sys.argv[2])
       c = a/b
       print('您输入的两个数相除的结果是:',c)
      except (IndexError,ValueError,ArithmeticError):
       print('程序发生了数组越界,数字格式异常,算术异常之一')
      except Exception:
       print("未知异常")
      #访问异常信息
      def foo():
      try:
       fis = open("a.txt")
      except Exception as e:
       print(e.args)
       print(e.errno)
       print(e.strerror)
      foo()
      # finally 的使用
      s = input('请输入除数:')
      try:
       result = 20 / int(s)
       print('20 除以%s的结果是:%g' % (s, result))
      except ValueError:
       print("值错误")
      except ArithmeticError:
       print("算术错误")
      else:
       print("没有出现异常")
      finally:
       print("资源回收")
      # 异常处理嵌套
      # 使用raise引发异常
      """raise:单独一个raise,该语句引发当前上下文中捕获的异常,比如在except块中,
      或者默认引发RuntimeError异常。
      raise 异常类:raise后带一个异常类,该语句引发指定异常类的默认实例
      raise 异常对象:引发指定的异常对象
      """
      # 自定义异常类
      class AuctionException(Exception): pass
      # traceback模块来处理异常传播轨迹,使用traceback可以方便的处理python的异常传播
      # 轨迹。导入traceback模块之后,traceback提供了两个常用方法
      """
      traceback.print_exc() : 将异常传播轨迹信息输出到控制台或指定文件中
      format_exc() : 将异常传播轨迹信息转换成字符串
      """
      import traceback
      class SelfException(Exception): pass
      def main():
       print("abc")
      try:
       main()
      except Exception as e:
      #捕获异常,并将异常传播到控制台
       traceback.print_exc()
      #捕获异常,并将异常信息输出到指定的文件中
       traceback.print_exc(file=open('log.txt', 'a'))
  
 

 

 

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

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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。