Python|python 错误和异常


Python|python 错误和异常

文章图片


Python|python 错误和异常

文章图片


Python|python 错误和异常

文章图片


Python|python 错误和异常

文章图片


Python|python 错误和异常


Python 有两种错误很容易辨认:语法错误和异常 。
Python assert(断言)用于判断一个表达式 , 在表达式条件为 false 的时候触发异常 。
语法错误

Python 的语法错误或者称之为解析错 , 是初学者经常碰到的书写错误

这个例子中 , 函数 print() 被检查到有错误 , 是它前面缺少了一个冒号: 。

语法分析器指出了出错的一行 , 并且在最先找到的错误的位置标记了一个小小的箭头 。
异常
即便 Python 程序的语法是正确的 , 在运行它的时候 , 也有可能发生错误 。 运行期检测到的错误被称为异常 。
大多数的异常都不会被程序处理 , 都以错误信息的形式展现在这里:

异常以不同的类型出现 , 这些类型都作为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError和 TypeError 。
异常处理
异常捕捉可以使用try/except语句 。
(python集成开发环境(IDE) PyCharm的安装和使用 在 PyCharm 软件中测试)

try 语句按照如下方式工作;

首先 , 执行 try 子句(在关键字 try 和关键字 except 之间的语句) 。
如果没有异常发生 , 忽略 except 子句 , try 子句执行后结束 。
如果在执行 try 子句的过程中发生了异常 , 那么 try 子句余下的部分将被忽略 。 如果异常的类型和 except 之后的名称相符 , 那么对应的 except 子句将被执行 。 如果一个异常没有与任何的 except 匹配 , 那么这个异常将会传递给上层的 try 中 。
一个 try 语句可能包含多个except子句 , 分别来处理不同的特定的异常 。 最多只有一个分支会被执行 。 处理程序将只针对对应的 try 子句中的异常进行处理 , 而不是其他的 try 的处理程序中的异常 。
一个except子句可以同时处理多个异常 , 这些异常将被放在一个括号里成为一个元组 。

最后一个except子句可以忽略异常的名称 , 它将被当作通配符使用 。 你可以使用这种方法打印一个错误信息 , 然后再次把异常抛出 。

try/except...else

try/except 语句还有一个可选的 else 子句 , 如果使用这个子句 , 那么必须放在所有的 except 子句之后 。 else 子句将在 try 子句没有发生任何异常的时候执行 。
以下实例在 try 语句中判断文件是否可以打开 , 如果打开文件时正常的没有发生异常则执行 else 部分的语句 , 读取文件内容:

【Python|python 错误和异常】使用 else 子句比把所有的语句都放在 try 子句里面要好 , 这样可以避免一些意想不到 , 而 except 又无法捕获的异常 。

try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码 。

输出结果