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文件
python
python - 异常处理的语句

当没有错误时,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('处理结束')

python
python - 异常处理的语句

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("处理结束")

python
python - 异常处理的语句

并且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,查看继承关系
python
python - 异常处理的语句