一、语法错误与异常
1、语法错误:代码不符合解释器或编译器的语法,如:print()输出单词出错
2、逻辑错误:不完成或者不合法的输入或者计算机出问题,如:死循环
异常:执行过程中出现问题导致程序无法执行的问题
1、程序遇到逻辑或者算法问题,如:1 / 0
2、运行过程中计算机错误,如:内存不够
异常出现的过程:
1、异常产生,检查到错误且解释器认为是异常,抛出异常
2、异常处理,截获异常,忽略或者终止程序处理异常
总结:异常都可以是错误,但是错误不一定是异常
异常
运行期检测到的错误被称为异常,大多数的异常都不会被程序处理,都以错误信息的形式展现。
比如说打开当前目录下的文件:
file_name = input("请输入需要打开的文件名:")
f = open(file_name)
print('文件的内容是:')
for i in f:
print(i)
运行结果:
如果输入错误的信息,则程序会将一部分信息打印出来,如上面的例子中的FileNotFountError异常,错误信息的前面显示了异常的上下文。
二、Python中常见的异常
异常类列表
网页链接.
BaseException
- SystemExit //解释器请求退出
- KeyboardInterrupt //中断
- GeneratorExit //生成器(generator)发生异常来通知退出
- Exception //常规错误的基类
- StopIteration //迭代器没有更多的值
- StopAsyncIteration
- ArithmeticError
- FloatingPointError
- OverflowError
- ZeroDivisionError
- AssertionError //断言语句失败
- AttributeError //对象没有这个属性
- BufferError
- EOFError
- ImportError
- ModuleNotFoundError
- LookupError
- IndexError
- KeyError
- MemoryError //内存溢出错误(对于Python 解释器不是致命的)
- NameError //未声明/初始化对象 (没有属性)
- UnboundLocalError //访问未初始化的本地变量
- OSError //操作系统错误
- BlockingIOError
- ChildProcessError
- ConnectionError
- BrokenPipeError
- ConnectionAbortedError
- ConnectionRefusedError
- ConnectionResetError
- FileExistsError
- FileNotFoundError
- InterruptedError
- IsADirectoryError
- NotADirectoryError
- PermissionError
- ProcessLookupError
- TimeoutError
- ReferenceError // 弱引用(Weak reference)试图访问已经垃圾回收了的对象
- RuntimeError //RuntimeError
- NotImplementedError
- RecursionError
- SyntaxError //Python 语法错误
- IndentationError
- TabError
- IndentationError
- SystemError // 一般的解释器系统错误
- TypeError // 对类型无效的操作
- ValueError //传入无效的参数
- UnicodeError //Unicode 相关的错误
- UnicodeDecodeError
- UnicodeEncodeError
- UnicodeTranslateError
- UnicodeError //Unicode 相关的错误
- Warning //警告异常
- DeprecationWarning //关于被弃用的特征的警告
- PendingDeprecationWarning //关于特性将会被废弃的警告
- RuntimeWarning //可疑的运行时行为(runtime behavior)的警告
- SyntaxWarning //可疑的语法的警告
- UserWarning //用户代码生成的警告
- FutureWarning //关于构造将来语义会有改变的警告
- ImportWarning
- UnicodeWarning
- BytesWarning
- ResourceWarning
下面介绍几个常见的异常:
AttributeError //对象没有这个属性
>>> my.fsa()
Traceback (most recent call last):
File "<pyshell#51>", line 1, in <module>
my.fsa()
AttributeError: 'list' object has no attribute 'fsa'
>>>
TypeError //对类型无效的操作
>>> 1+'1' #ascll码31
Traceback (most recent call last