python 的异常及其处理

python标准异常

什么是异常?

  异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行

  一般情况下,在Python无法正常处理程序时就会发生一个异常。

  异常是Python对象,表示一个错误。

  当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行

以下为简单的try....except...else的语法:

try:
<语句>        #运行别的代码
except <名字><语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

try的工作原理是,当开始一个try语句后,python就在当前程序的上下文中作标记,这样当异常出现时就可以回到这里,try子句先执行,接下来会发生什么依赖于执行时是否出现异常。

  • 如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。
  • 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。
  • 如果在try子句执行时没有发生异常,python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。
try:
    print('try.......')
    r=10/0
    print('result:',r)
except ZeroDivisionError  as e:
    print('except',e)
finally:
    print('finally.....')
print('END')

except可以带多种异常类型

try:
   You do your operations here;
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   If there is any exception from the given exception list, 
   then execute this block.
   ......................
else:
   If there is no exception then execute this block.

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

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

手动触发异常:raise 语句允许程序员强制抛出一个指定的异常。

用户自定义异常

扫描二维码关注公众号,回复: 1638228 查看本文章

 在程序中可以通过创建新的异常类型来命名自己的异常(Python 类的内容请参见类)。异常类通常应该直接或间接的从 Exception 类派生,例如:

class MyError(Exception):
def __init__(self, value):
self.value = value

def __str__(self):
return repr(self.value)

try:
raise MyError('错误信息')
except MyError as msg:
print( msg.value)
#print( msg.args)
#print( '-----', msg.value)

6. assert 断言

assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。

a = 1
assert a < 5
assert a > 5, '根本没有这会事'

猜你喜欢

转载自www.cnblogs.com/lanyinhao/p/9197397.html