- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python3 错误和异常.pdf
Python3 错误和异常
Python 错误和异常
作为Python初学者,在刚学习Python编程时,经常会看到⼀些报错信息,在前⾯我们
没有提及, 章节我们会专门介绍。
Python有两种错误很容易辨认:语法错误和异常。
语法错误
Python 的语法错误或者称之为解析错,是初学者经常碰到的,如下实例
while True print(Hello world)
File stdin, line 1, in ?
while True print(Hello world)
^
Syntax rror: invalid syntax
个例⼦中,函数 print() 被检查到有错误,是它前⾯缺少了⼀个冒号 (:)。
语法分析器指出了出错的⼀⾏,并且在最先找到的错误的位置标记了⼀个⼩⼩的箭
头。
异常
即便Python程序的语法是正确的,在运⾏它的时候,也有可能发⽣错误。运⾏期检测
到的错误被称为异常。
⼤多数的异常都不会被程序处理,都以错误信息的形式展现在 ⾥:
10 * (1/0)
Traceback (most recent call last):
File stdin, line 1, in ?
ZeroDivision rror: division by zero
4 + spam*3
Traceback (most recent call last):
File stdin, line 1, in ?
Name rror: name spam is not defined
2 + 2
Traceback (most recent call last):
File stdin, line 1, in ?
Type rror: Cant convert int object to str implicitly
异常以不同的类型出现, 些类型都作为信息的⼀部分打印出来: 例⼦中的类型有
ZeroDivisionError ,NameError 和 TypeError 。
错误信息的前⾯部分显⽰了异常发⽣的上下⽂,并以调⽤栈的形式显⽰具体信息。
异常处理
以下例⼦中,让⽤户输⼊⼀个合法的整数,但是允许⽤户中断 个程序 (使⽤
Control-C 或者操作系统提供的⽅法)。⽤户中断的信息会引发⼀个 KeyboardInterrupt
异常。
while True:
try :
x = int(input(Please enter a number: ))
break
except Value rror:
print(Oops! That was no valid number. Try again
try语句按照如下⽅式⼯作;
⾸先,执⾏try⼦句 (在关键字try和关键字e cept之间的语句)
如果没有异常发⽣,忽略e cept⼦句,try⼦句执⾏后结束。
如果在执⾏try⼦句的过程中发⽣了异常,那么try⼦句余下的部分将被忽略。如
果异常的类型和 e cept 之后的名称相符,那么对应的e cept⼦句将被执⾏。最
后执⾏ try 语句之后的代码。
如果⼀个异常没有与任何的e cept匹配,那么 个异常将会传递给上层的try
中。
⼀个 try 语句可能包含多个e cept⼦句,分别来处理不同的特定的异常。最多只有⼀个
分⽀会被执⾏。
处理程序将只针对对应的try⼦句中的异常进⾏处理,⽽不是其他的 try 的处理程序中
的异常。
⼀个e cept⼦句可以同时处理多个异常, 些异常将被放在⼀个括号⾥成为⼀个元
组,例如:
except (Runtime rror, Type rror, Name rror):
pass
最后⼀个e cept⼦句可以忽略异常的名称,它将被当作通配符使⽤。你可以使⽤ 种
⽅法打印⼀个错误信息,然后再次把异常抛出。
import sys
try :
f = open(myfile.txt)
s = f.readline()
i = int(s.str
文档评论(0)