学习python,到码农博客。

Python中错误和异常怎么处理

使用python编程的时候难免会出现各种各样的错误,这些错误会使程序中断。好在python解释器会告诉你错误发生在什么位置以及错误产生的原因,便于我们进行修改和调试。有时候我们并不希望这种错误中断程序的运行,于是通过异常处理能够忽略本次异常让程序继续运行下去。


python中会发生两种类型的错误。

1、语法错误:如果未遵循正确的语言语法,则会引发语法错误。
2、逻辑错误(异常):在运行时中,通过语法测试后发生错误的情况称为异常或逻辑类型。

 

一、语法错误

string = 'Hello Word'
if string == 'Hello'
    print('是Hello')

运行结果:

  File "D:/python/lianxi/add.py", line 15
    if string == 'Hello'
                       ^
SyntaxError: invalid syntax

它就返回了语法错误的信息,用小箭头告诉我们,if语句后面少了一个:(冒号)。

 

二、逻辑错误(异常)

shu = 10
result = shu / 0
print(resule)

运行结果:

Traceback (most recent call last):
  File "D:/python/lianxi/add.py", line 15, in <module>
    result = shu / 0
ZeroDivisionError: division by zero

抛出一个ZeroDivisionError异常,叫处理异常。

 

三、异常处理

我们可以通过使用 try..except 来处理异常状况。一般来说我们会把通常的语句放在 try 代码块中,将我们的错误处理器代码放置在 except 代码块中。

try:        # 尝试运行以下代码
    result = 5 / 2
    print(result)
except:        # 捕获到异常执行以下代码
    print('程序异常')

运行结果:

2.5

 

如果我们故意写错,看是怎么样的:

try:        # 尝试运行以下代码
    result = 5 / 0
    print(result)
except:        # 捕获到异常执行以下代码
    print('程序异常')

运行结果:

程序异常

通过上面可以看到,如果没有出现异常,它只运行try下的代码;出现异常,它就运行了except下面的代码。

 

如果知道它报的的是ZeroDivisionError异常的话,那可以这样写:

try:
    x = 5 / 0
    print(x)
except ZeroDivisionError:        # 捕获到ZeroDivisionError的话,执行下面的代码
    print('不能除零')
except:                            # 如果是出现其它错误的话,那就执行这里的代码
    print('其它错误')

运行结果:

不能除零

 

如果想看捕获的异常详细信息,可以这样:

try:
    x = 5 / 0
    print(x)
except ZeroDivisionError as ze:        # 捕获到ZeroDivisionError的话,执行下面的代码
    print('出现异常',ze)

运行结果:

出现异常 division by zero

 

 

四、try...else语句

try:
    x = 5 / 2
    print(x)
except ZeroDivisionError:        # 捕获到ZeroDivisionError的话,执行下面的代码
    print('不能除零')
except:                            # 如果是出现其它错误的话,那就执行这里的代码
    print('其它错误')
else:                            # 如果try执行没有出现异常的话,就再执行else中的代码
    print('没有异常')

运行结果:

2.5
没有异常

 else语句是在try语句中的代码没有任何异常的情况下,再执行else语句下的代码。

 

五、try...finally语句

f = open('data.txt')
try:
    print(f.read())
except:
    print('文件操作遇到错误!')    # 这个时候文件始终是打开的,可能后面再读取的时候就会遇到错误,这种情况下我们就适合用finally
finally:                        # 不管上面有没有出现异常,都要执行finally下的代码
    f.close()

运行结果:

文件操作遇到错误!

finally语句就是不管上面有没有异常,都要执行finally语句下的代码,通常是做一些必须要释放的资源的代码,最典型的就是文件操作和数据库操作。

 

六、抛出异常

def method():
    raise NotImplementedError('该方法代码还未实现')
    # 设定这个函数在这,留个位置,要你写入代码,但是可能你没写进去,那就设定默认的报错
method()

运行结果:

Traceback (most recent call last):
  File "D:/python/lianxi/add.py", line 17, in <module>
    method()
  File "D:/python/lianxi/add.py", line 15, in method
    raise NotImplementedError('该方法代码还未实现')
NotImplementedError: 该方法代码还未实现

raise语句是抛出一个指定的异常。

 

 

 本文转自:https://www.myblou.com/archives/1497
 
posted @ 2020-12-19 13:07  码农blog  阅读(1235)  评论(0编辑  收藏  举报

学习python,到码农博客。

/* 看板娘 */ /* 粒子吸附*/