错误和异常

程序运行时有两种可以分辨的错误: syntax error 和 exception , 按中文来说, 就是语法错误和异常。

语法错误

语法错误也就是解析错误,是我们最优可能遇到的错误。

while True print('Hello world')

File"", line 1, in?while True print('Hello world')^SyntaxError: invalid syntax

在这个例子中, 错误是在 print() 函数这里被发现的, 因为在它之前少了一个冒号 (':'). 文件的名称与行号会被打印出来, 以便于你能找到一个脚本中导致错误的地方。

异常

即使语法没有错误,在运行时也会有报错,这样的报错我们叫做异常:大多数异常并不会被程序处理, 不过, 导致错误的信息会被显示出来。

print(10 * (1/0))

Traceback (most recent call last):

File"/Users/hadoop/Documents/Python_workspace/python_3.X/Exception.py", line 3, in

print(10 * (1/0))

ZeroDivisionError: division by zero

异常处理

try 语句像下面这样使用.

首先, try clause (在 try 和 except 之间的语句) 将被执行.

如果没有异常发生, except clause 将被跳过, try 语句就算执行完了.

如果在 try 语句执行时, 出现了一个异常, 该语句的剩下部分将被跳过. 然后如果它的类型匹配到了 except 后面的异常名, 那么该异常的语句将被执行, 而执行完后会运行 try 后面的问题.

如果一个异常发生时并没有匹配到 except 语句中的异常名, 那么它就被传到 try 语句外面; 如果没有处理, 那么它就是 unhandled exception 并且将会像前面那样给出一个消息然后执行.

whileTrue:try:

nu= int(input("please input a number:"))break

exceptValueError:print("valid number!")

please input a number:a

valid number!

please input a number:a

valid number!

please input a number:1

一个 try 语句可以有多于一条的 except 语句, 用以指定不同的异常. 但至多只有一个会被执行. Handler 仅仅处理在相应 try 语句中的异常, 而不是在同一 try 语句中的其他 Handler. 一个异常的语句可以同时包括多个异常名, 但需要用括号括起来, 比如:

except(RuntimeError, TypeError, NameError):pass

最后的异常段可以忽略异常的名字, 用以处理其他的情况. 使用这个时需要特别注意, 因为它很容易屏蔽了程序中的错误! 它也用于输出错误消息, 然后重新产生异常 (让调用者处理该异常):

importsystry:

f= open('myfile.txt')

s=f.readline()

i=int(s.strip())exceptIOError as err:print("I/O error: {0}".format(err))exceptValueError:print("Could not convert data to an integer.")except:print("Unexpected error:", sys.exc_info()[0])raise

try ... except 语句可以有一个可选的 else 语句, 在这里, 必须要放在所有 except 语句后面. 它常用于没有产生异常时必须执行的语句. 例如:

for arg in sys.argv[1:]:try:

f= open(arg, 'r')exceptIOError:print('cannot open', arg)else:print(arg, 'has', len(f.readlines()), 'lines')

f.close()

使用 else 比额外的添加代码到 try 中要好, 因为这样可以避免偶然的捕获一个异常, 但却不是由于我们保护的代码所抛出的.

当一个异常发生了, 它可能有相关的值, 这也就是所谓的异常的参数. 该参数是否出现及其类型依赖于异常的类型.

在 except 语句中可以在异常名后指定一个变量. 变量会绑定值这个异常的实例上, 并且把参数存于 instance.args. 为了方便, 异常的实例会定义 __str__() 来直接将参数打印出来, 而不用引用 .args. 当然也可以在产生异常前, 首先实例化一个异常, 然后把需要的属性绑定给它.

try:raise Exception('spam', 'eggs')exceptException as inst:print(type(inst)) #the exception instance

print(inst.args) #arguments stored in .args

print(inst) #__str__ allows args to be printed directly,

#but may be overridden in exception subclasses

x, y = inst.args #unpack args

print('x =', x)('spam', 'eggs')

('spam', 'eggs')

x=spam

y= eggs

如果一个异常有参数, 它们将作为异常消息的最后一部分打印出来.

异常的 handler 处理的异常, 不仅仅是 try 语句中那些直接的异常, 也可以是在此处调用的函数所产生的异常。

python3语法错误-Python3 错误和异常相关推荐

  1. python3语法错误-【Python3之异常处理】

    一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: inva ...

  2. python3语法错误-python-使用Python 3打印时出现语法错误

    小编典典 此错误消息表示你尝试使用Python 3遵循示例或运行使用Python 2print语句的程序: print "Hello, World!" 上面的语句在Python 3 ...

  3. 【Python基础】Python3十大经典错误及解决办法

    ◆ ◆ ◆  ◆ ◆ 接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极好的.下面,严小样儿为大家罗列出Pyt ...

  4. [转载] Python3十大经典错误及解决办法

    参考链接: Python中的关键字2 ◆ ◆ ◆  ◆ ◆ 接触了很多Python爱好者,有初学者,亦有转行人.不论大家学习Python的目的是什么,总之,学习Python前期写出来的代码不报错就是极 ...

  5. Python3安装turtle提示错误:Command python setup.py egg_info failed with error code 1

    Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1 Python3.5安 ...

  6. el表达式的语法_「手把手教python3接口自动化」「第三章」:Python3 语法

    1 Python3 语法 1.1 基础语法 [编码] 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码. [标 ...

  7. Ruby 学习笔记(和 Python3 语法进行对比)

    我是先接触 Python3 的,如果我自己主动来选择,可能不会再去学 Ruby(可能先入为主的思想太根深蒂固了,不过最主要的还是太懒了),然鹅由于种种原因,我还是要来看一下Ruby(真是天理难容,/大 ...

  8. python常见错误-Python错误及异常总结汇总

    程序员的一生中,错误几乎每天都在发生.在过去的一个时期, 错误要么对程序(可能还有机器)是致命的,要么产生一大堆无意义的输出,无法被其他计算机或程序识别,连程序员自己也可能搞不懂它的意义.一旦出现错误 ...

  9. python显示语言错误_Python错误和异常

    错误和异常 Python 中(至少)有两种错误:语法错误和异常( syntax errors 和 exceptions ). 1.1.语法错误 语法错误,也被称作解析错误: while True pr ...

最新文章

  1. 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案.pdf
  2. 从vuex源码分析module与namespaced
  3. SpringBoot配置文件 【自定义配置项】
  4. zabbix 监控使用宏自动发现网卡并进行监控
  5. 什么是信息系统安全等级保护
  6. Git命令提交代码步骤
  7. 计算机科技英语写作,英语科技写作
  8. matlab虚拟变量,不要再稀里糊涂的做回归了:如何设置哑变量
  9. android vplayer 源码,【关于ffmpeg和Android的种种】【VPlayer不开源】【Android常用调试方法】...
  10. uni-App打包ios后白屏
  11. [案例]信息巨头Carfax如何打造数据产品
  12. the voyage游戏android,Voyage游戏
  13. Java中Flie类的用法
  14. mysql 黑名单_51ak带你看MYSQL5.7源码4:实现SQL黑名单功能
  15. 第八章 linux系统引导过程及引导修复
  16. python中字母大小顺序_Python中的字母顺序
  17. 《石头迷阵》游戏业务数据设计、游戏功能制作、游戏界面绘制
  18. Linux 服务器上搭建SVN服务端
  19. 前端开发的 学php吗,web前端开发难学吗
  20. HSY 点餐(数论)

热门文章

  1. Shell基础:变量类型 运算符
  2. 疯狂C#~伴随着我的库存管理¥
  3. LeetCode LFU Cache
  4. php设定错误和异常处理可使用的函数
  5. Android 动画之TranslateAnimation应用详解
  6. Struts2 - Check Login Interceptor
  7. NoSql数据库使用半年后在设计上面的一些心得
  8. python和c学习-Cpython学习一:入门
  9. 风云编程python-动态排名可视化 | 带你领略编程语言20年风云变化
  10. python3下载安装windows教程-Python3入门笔记(1) —— windows安装与运行