python中的错误处理

简介:

错误的处理语法:

try ... except ... finally ...

把可能会出错的代码放到try语句里面,执行出错,执行except语句块。如果有finally语句块,则执行finally语句块。执行没有错,不执行except语句块,但是一定会执行finally语句块。

可以有多个不同的except语句块。

实例:

1
2
3
4
5
6
7
8
9
10
11
try :
     print ( 'try...' )
     =  10 / int ( 'a' )
     print ( 'result:' , r)
except  ValueError as e:
     print ( 'ValueError: ' , e)
except  ZeroDivisionError as e:
     print ( 'ZeroDivisionError: ' , e)
finally :
     print ( 'finally...' )
print ( 'END' )

如果没有错误发生,可以在except后面加一个else,自动执行else。

1
2
3
4
5
6
7
8
9
10
11
12
13
try :
     print ( 'try...' )
     =  10 / int ( 'a' )
     print ( 'result:' , r)
except  ValueError as e:
     print ( 'ValueError: ' , e)
except  ZeroDivisionError as e:
     print ( 'ZeroDivisionError: ' , e)
else :
     print ( 'no error!' )
finally :
     print ( 'finally...' )
print ( 'END' )

python所有的错误都继承于BaseException,捕获错误可以跨越多层调用。


抛出错误

要抛出错误,首先需要定义一个错误的class,选择好继承关系,然后使用raise语句抛出一个错误的实例。

1
2
3
4
5
6
7
8
9
10
11
12
class  FooError(ValueError):
     pass
 
     
def  foo(s):
     =  int (s)
     if  = =  0 :
         raise  FooError( 'invalid value: %s'  %  s)
     return  10  /  n
     
        
foo( '0' )


python debug的方法:

直接print(),简单粗暴。

断言assert

用print的地方都可以用assert来替代。

示例:

1
2
3
4
5
6
7
def  foo(s):
     =  int (s)
     assert  n ! =  0 'n is zero!'
     return   10 / n
 
def  main():
     foo( '0' )

断言失败,assert会抛出AssertionError:

logging

把assert换成logging,logging不会抛出错误,可以输出到文件。

1
2
3
4
5
6
7
import  logging
logging.basicConfig(level = logging.INFO)  # level的级别有debug,info, warning, error
 
=  '0'
=  int (s)
logging.info( 'n=%d'  %  n)
print ( 10 / n)












本文转自ting2junshui51CTO博客,原文链接:http://blog.51cto.com/ting2junshui/1751835 ,如需转载请自行联系原作者



相关文章
|
数据采集 数据挖掘 编译器
【Python 基础教程】错误与异常的处理
【Python 基础教程】错误与异常的处理
166 0
【Python 基础教程】错误与异常的处理
|
Python
Python错误:'tuple' object is not callable
Python错误:'tuple' object is not callable
232 0
|
程序员 Python Windows
全网首发:安装Python(或其他软件)出现0x80072f7d错误的解决办法
全网首发:安装Python(或其他软件)出现0x80072f7d错误的解决办法
452 0
|
IDE 测试技术 开发工具
Python(10)错误、调试、测试(下)
Python(10)错误、调试、测试(下)
145 0
|
Python
Python(10)错误、调试、测试(上)
Python(10)错误、调试、测试(上)
110 0
|
Python
Python错误: NameError
Python错误: NameError
|
存储 缓存 安全
【python】错误和异常(第三讲)
assert,翻译过来是“断言”之意。assert 是一句等价于布尔真的判定,发生异常就意味着表达式为假。 assert 的应用情景就有点像汉语的意思一样,当程序运行到某个节点的时候,就断定某个变量的值必然是什么,或者对象必然拥有某个属性等,简单说就是断定什么东西必然是什么,如果不是,就抛出错误。......
211 0
【python】错误和异常(第三讲)
|
自然语言处理 Linux 测试技术
【python】错误和异常(第二讲)
处理多个异常,并不是因为同时报出多个异常。程序在运行中,只要遇到一个异常就会有反应,所以,每次捕获到的异常一定是一个。所谓处理多个异常的意思是可以容许捕获不同的异常,有不同的 except 子句处理。......
153 0
【python】错误和异常(第二讲)
|
Linux 云计算 索引
【python】错误和异常(第一讲)
逻辑错误可能会由于不完整或者不合法的输入导致,也可能是无法生成、计算等,或者是其它逻辑问题。当 Python 检测到一个错误时,解释器就无法继续执行下去,于是抛出异常。
260 0
【python】错误和异常(第一讲)
|
数据安全/隐私保护 索引 Python
【python小白到精通 | 课程笔记】第一章 初识Python(这几个小错误你会犯吗?)
【python小白到精通 | 课程笔记】第一章 初识Python(这几个小错误你会犯吗?)
108 0