错误处理:

码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的 调用中,返回错误码非常常见。比如打开文件的函数 open() ,成功时返 回文件描述符(就是一个整数),出错时返回 -1 。

和错误码混在一起,造成调用者必须用大量的代码来判断是否出错:一旦出错,还要一级一级上报,直到某个函数可以处理该错误(比如, 给用户输出一个错误信息)。

高级语言一般都有

错误(异常)处理机制:

try:

print('try...')

r = 10 / 0

print('result:', r)

except ZeroDivisionError as e:

print('except:', e)

finally:

print('finally...')

print('END')

 


 

当我们认为某些代码可能会出错时,就可以用 try 来运行这段代码,如 果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码,即 except 语句块,执行完 except 后,如果有 finally 语句块,则执行 finally 语句块,至此,执行完毕。

一般,try放你的工程代码,except放你的错误处理代码,finally放你的收尾善后代码

 

try:

print('try...')

r = 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')

request python返回400 python返回错误_python




异常处理的逻辑:




    每异常----->结束

    有异常----->

    找异常处理的出口------> 

    找到一个出口就出,后面的不看  ------> 

    异常处理完了,收拾一下现场(比如关闭打开了的文件啊什么的)


所以在使用 except 时需要注意的是,它不但捕获该类型的错误,还把其 子类也“一网打尽”。比如:

try:

foo()

except ValueError as e:

print('ValueError')

except UnicodeError as e:

print('UnicodeError')

ValueError 的子类,如果有,也被第一个 except 给捕获了。



抛出错误



    python有很多自带的错误(异常),也可以自己定义异常,然后再自己程序中抛出异常


class FooError(BaseError):






class FooError(ValueError):






用 raise



def foo(s):



n = int(s)

if n==0:

raise FooError('invalid value: %s' % s)

return 10 / n