1、主动抛出异常
当程序在发生某些状况的时候,我们希望程序能主动的抛出异常,一般我们用raise
语句,抛出异常之后,若没有try/except
的话就会扔给python
解释器去处理
基本语法:
raise SomeException,argsv
- 第一个参数
SomeException
是触发异常的名字,必须是一个字符串、类或者实例 args
描述异常信息的元组,一般我们用字符串表示异常的原因
for i in range(1,5):
if i>3:
raise ValueError,'i>3'
else:
print i
# 1
# 2
# 3
# raise ValueError,'i>3'
若我们想自己去处理抛出的异常,我们需要加上try/except
。
2、简单的 try-except
用法
将可能发生异常的代码放到try语句块中,而处理异常的代码会在except语句块中实现:
try:
for i in range(1,5):
if i>3:
raise ValueError,'i>3'
else:
print i
except ValueError,e:
print 'catch the value error:',e
执行后,输出结果为:
# 1
# 2
# 3
# catch the value error: i>3
3、利用 assert 语句来发现问题
和其他的主流语言c/c++
一样,python
也有断言,**assert
语句是一种有条件在程序代码中触发异常,**主要是为了调试程序服务的,能快速方便的查找程序的异常,或者一些不恰当的输入。
assert
的用法如下:
assert expression, args
expression
是一个表达式args
是对条件判断的描述信息
也就是说如果表达式为假,就会触发异常,所以一般我们会把表达式写成我们认为正确的程序应该满足的条件,相当于我们代码块做的一条报警线,告诉你,正确路应该怎么走,一旦不满足正确的行为,就会响起警报 ,触发异常。
x=10
y=20
assert x==y ,'x not equal y'
>>
assert x==y ,'x not equal y'
AssertionError: x not equal y
上面的代码,我们设的警戒线是x==y,这个是正确的行为,一旦x不等于y, 就会抛出异常,它在执行的过程中其实相当于执行如下代码:
x=10
y=20
if __debug__ and not x==y:
raise AssertionError('x not equal y')
>>
raise AssertionError('x not equal y')</