• python


    python - 异常处理的语句

    一、总结

    一句话总结:

    将可能出错的代码放到try里面,except可以指定类型捕获异常,可以将异常结果存在文档中。
    import time
    try:
        # 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次;
        print(s)    #可能NameError
    except NameError as e:    # 对于异常进行一个重命名;记录了异常的详细信息;
        # 可能执行一次, 也可能不执行;
        print('名称错误')
        with open('except.log','w') as f: #把异常内容写入except.log文件
            f.write('名称错误')
    finally:
    # 无论是否出现异常, 肯定会执行一次
        print('处理结束')

    二、python - 异常处理的语句

    转自或参考:python - 异常处理的语句
    https://blog.csdn.net/weixin_43067754/article/details/85725569

    try…except… else…finally…

    1)普通的异常处理:

    import time
    try:
    	# 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次;
        print(s)	#可能NameError
    except NameError as e:	# 对于异常进行一个重命名;记录了异常的详细信息;
        # 可能执行一次, 也可能不执行;
        print('名称错误')
        with open('except.log','w') as f: #把异常内容写入except.log文件
            f.write('名称错误')
    finally:
    # 无论是否出现异常, 肯定会执行一次
        print('处理结束')
    

    输出:

    名称错误
    处理结束
    

    并且会得到一个except.log文件

    当没有错误时,except不执行

    import time
    try:
        # print(s)
        print('hello')  # 没有错误,except不执行
    except NameError as e:
        print('名称错误')
        with open('except.log','w') as f:
            f.write('名称错误')
    finally:
        print('处理结束')
    

    输出:

    hello
    处理结束
    

    可以调整except.log文件记录格式显示时间错误内容等:

    import time
    try:
        # print(s)
        print('hello')  # 没有错误,except不执行
    except NameError as e:
        print('名称错误')
        with open('except.log','w') as f:
            f.write(time.ctime()+' ') #打印时间
            f.write(str(e))	# 打印错误详情
    finally:
        print('处理结束')
    

    try语句中一旦出现问题, 后面的语句(try里面的)不执行。

    import  time
    try:
        # 如果你觉得代码可能出现问题, 那么放在try语句中, 只执行一次;
        print('hello')
        with open('/etc/aa') as f:  # try语句中一旦出现问题, 后面的语句(try里面的)不执行
            print(f.read()[:5])
    
        print("文件读取结束")
        li = [1, 2, 3, 4]   
        print(li[5])
        print(s)
        print("hello")
    except (NameError, IndexError) as e:   # 对于异常进行一个重命名;记录了异常的详细信息;
        # 可能执行一次, 也可能不执行;
        # print("名称错误")
        with open("except.log", 'a+') as f:
            f.write(time.ctime() + ' ' + str(e) + '
    ')
    finally:
        # 无论是否出现异常, 肯定会执行一次,
        print("处理结束")
    

    并且except.log文件什么都不记录。

    2)python内置异常处理
    含有父子级关系

    BaseException
     +-- SystemExit
     +-- KeyboardInterrupt
     +-- GeneratorExit
     +-- Exception
          +-- StopIteration
          +-- StopAsyncIteration
          +-- ArithmeticError
          |    +-- FloatingPointError
          |    +-- OverflowError
          |    +-- ZeroDivisionError
          +-- AssertionError
          +-- AttributeError
          +-- BufferError
          +-- EOFError
          +-- ImportError
          |    +-- ModuleNotFoundError
          +-- LookupError
          |    +-- IndexError
          |    +-- KeyError
          +-- MemoryError
          +-- NameError
          |    +-- UnboundLocalError
          +-- OSError
          |    +-- BlockingIOError
          |    +-- ChildProcessError
          |    +-- ConnectionError
          |    |    +-- BrokenPipeError
          |    |    +-- ConnectionAbortedError
          |    |    +-- ConnectionRefusedError
          |    |    +-- ConnectionResetError
          |    +-- FileExistsError
          |    +-- FileNotFoundError
          |    +-- InterruptedError
          |    +-- IsADirectoryError
          |    +-- NotADirectoryError
          |    +-- PermissionError
          |    +-- ProcessLookupError
          |    +-- TimeoutError
          +-- ReferenceError
          +-- RuntimeError
          |    +-- NotImplementedError
          |    +-- RecursionError
          +-- SyntaxError
          |    +-- IndentationError
          |         +-- TabError
          +-- SystemError
          +-- TypeError
          +-- ValueError
          |    +-- UnicodeError
          |         +-- UnicodeDecodeError
          |         +-- UnicodeEncodeError
          |         +-- UnicodeTranslateError
          +-- Warning
               +-- DeprecationWarning
               +-- PendingDeprecationWarning
               +-- RuntimeWarning
               +-- SyntaxWarning
               +-- UserWarning
               +-- FutureWarning
               +-- ImportWarning
               +-- UnicodeWarning
               +-- BytesWarning
               +-- ResourceWarning
    

    可以ctrl进入IndexError,查看继承关系

     
  • 相关阅读:
    抽屉视图第三方控件
    数组NSArry注意事项
    NSInteger 和 NSUInteger 比较大小的注意事项
    IOS应用中的二维码生成和二维码扫描解析
    FMDatabase 的使用(转)
    ASIHTTPRequest的简单使用
    关于MBProgressHUD的使用
    获取文件夹大小
    31. Next Permutation(中等,搞清楚啥是 next permutation)
    Deap Learning (吴恩达) 第一章深度学习概论 学习笔记
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13156899.html
Copyright © 2020-2023  润新知