python异常与错误区别-Python教程

资源魔 25 0

谬误以及异样概念

谬误:

1.语法谬误:代码没有合乎诠释器或许编译器语法

2.逻辑谬误:没有完好或许没有非法输出或许较量争论呈现成绩

异样:执行进程中呈现万体招致顺序无奈执行

1.顺序遇到逻辑或许算法成绩

2.运转进程入彀算机谬误(内存不敷或许IO谬误)

谬误以及异样区分

谬误:

代码运转前的语法或许逻辑谬误,

语法谬误正在执行前修正,逻辑谬误无奈修正

异样分为两个步骤:

1.异样孕育发生,反省到谬误且诠释器以为是异样,抛出异样;

2.异样解决,截获异样,疏忽或许终止顺序解决异样

Python常见谬误

常见谬误:ipython下

1. a : NameError

正在不界说一个变量的时分间接援用

2. if True : SyntaxError

语法谬误

3. f = open('1.txt') : IOError

试图关上一个没有存正在的文件的时分

4. 10/0 : ZeroDivisionError

5. a = int('dd') : ValueError

进行强迫类型转换的时分遇到的谬误

try--except异样解决(1)

try-except:异样解决

try:
    try_suite
except Exception [, e]:
    exception_block

1.try用来捕捉try_suite中的谬误,而且将谬误交给except解决

2.except用来解决异样,假如异样解决以及设置捕捉异样分歧,应用exception_block解决异样

例:

try:
    a
except Exception, e:
    print e

try-except捕捉异样剖析:

Case 1:

try:
    undef
except:
    print 'catch an except'

Case 2:

try:
    if undef
except:
    print 'catch an except'

case 1:能够捕捉异样,由于是运转时谬误

case 2:不克不及捕捉异样,由于是语法谬误,运转前谬误

Case 3:

try:
    undef
except NameError, e:
    print 'catch an except', e
Case 4:
try:
    undef
except IOError, e:
    print 'catch an except', e

case 3:能够捕捉异样,由于设置捕捉NameError异样

case 4:不克不及捕捉异样,由于设置IOError,没有会解决NameError

try--except异样解决(2)

try-except:解决多个异样

try:
    try_suite
except Exception1 [e]:
    exception_block1
except Exception2 [e]:
    exception_block2
except ExceptionN [e]:
    exception_blockN

try-except--else应用

try:
    try_suite
except Exception1 [e]:
    exception_block1
else:
    none_exception

假如不异样,执行else语句中的代码

try--finally语句

try-finally语句:

try:
    try_suite
finally:
    do_finally

1.假如try语句不捕捉谬误,代码执行do_finally语句

2.假如try语句捕捉谬误,顺序起首执行do_finally语句,而后将捕捉到的谬误交给python诠释器解决

try-finally语句:

规定:try-finally无论能否检测到异样,城市执行finally代码

作用:为异样解决事情提供清算机制,用来封闭文件或许开释零碎资本

try-except-finally应用:

try:
    try_suite
except:
    do_except
finally:
    do_finally

1.若try语句不捕捉异样,执行完try代码段后,执行finally

2.若try捕捉异样,起首执行except解决谬误,而后执行finally

try-except-else-finally应用:

try:
    try_suite
except:
    do_except
else:
    do_else
finally:
    do_finally

1.若try语句不捕捉异样,执行完try代码块后,执行else代码块,最初执行finally

2.若try捕捉异样,起首执行except解决谬误,而后执行finally

with语句

with语句:

with context [as var]:

with_suite

1.with语句用来替代try-except-finally语句,是代码愈加简约;

2.context表白式前往是一个工具;

3.var用来保留context前往工具,单个前往值或许元祖;

4.with_suite应用var变量来对context前往工具进行操作

……

raise以及assert

raise语句

raise语句用于自动抛出异样

语法格局:raise [exception [, args]]

exception: 异样类

args: 形容异样信息的元组

例:

raise TypeError
raise TypeError, 'Test Error'
raise IOError, 'File Not Exist'

assert语句

断语言句:assert语句用于检测表白式能否为真,假如为假,诱发AssertionError谬误;

语法格局:assert expression [, args]

expression:表白式

args:判别前提的形容信息

例:

assert 7==6
assert 0, 'Test Error'

Python规范以及自界说异样

规范异样:python内建异样,顺序执行前就曾经存正在

自界说异样:

1.python容许自界说异样,用于形容python中不触及的异样状况

2.自界说异样必需承继Exception类

3.自界说异样只能自动触发

自界说异样示例:

class FileError(IOError):
    pass
raise FileError, 'Test FileError'
 
class CustomError(Exception):
    def __init__(self, info):
        Exception.__init__(self)
        self.errorinfo = info
    def __str__(self):
        return 'CustomError: %s' % self.errorinfo
try:
    raise CustomError('test CustomError')
except CustomError, e:
    print 'Error Info : %s' % e

相干保举:《Python教程》

以上就是python异样与谬误区分的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!