这里提醒各位一句,学习语法的时候,尤其是在各种网站学习的时候一定要实践一下,因为有坑... ...Python的语法与C++相似,但是一定不要以写C++的思维去写Python,因为它们有本质上的区别。Python是一门脚本语言,执行的过程就像bat和sh一样,它是一门脚本语言,而C++是一门编译语言。
举个例子:
def a():
print “函数a”
def b():
print ”函数b”
b()
a()
这段代码很简单,而且我保证没问题,你在C++里面能这么写吗?
下面讲一下Python的异常处理机制:
Python的异常处理常用的有以下四个关键字:
try
except
raise
finally
这又很神似C++,只不过catch被except替换掉了;
Python 所有的异常类型都是继承自一个内置类:Exception
异常有以下几种用法:
一、
最基本的异常处理
try:
<code>
except Exception:
<code>
这是最简单的,也是最保险的,只要发生异常我都抓到,但是缺点也很明显,你不知具体类型。
二、
指定具体的错误类型
try:
<code>
except RunTimeError: #except 后面加具体的错误类型
<code>
你也可以选择同时监听多种类型:
except (RumTimeError, ValueError, NameError...):
<code>
同时也可以获取异常输出的参数和信息:
except ValueError as e: #异常信息保存在e中,实际上e是ValueError异常类的实例对象
<code>
或
except ValueError, e:
<code>
建议使用第一种方法
三、
自己抛出异常
这里面就要用到raise了,它相当于C++里面的throw;
try:
raise Exception('fuck', 'bitch', 'shit') #抛出一个异常对象,里面输入的是初始化参数
except Exception as e:
print e.args
输出结果为:'fuck', 'bitch', 'shit
四、
自定义异常
前面说的都是普通玩家的玩法,下面是rmb玩家的玩法
首先定义一个错误类型NewError
class NewError(Exception): #继承Exception类
<code>
抛出新异常类型
try:
raise NewError('fuck', 'bitch', 'shit')
except NewError as e: #捕捉新错误类型
<code>
这是Python2.7版本的异常管理说明(https://docs.python.org/2/tutorial/errors.html);
结尾再说一点,能不用异常处理就尽量不用,异常处理机制比较耗时,平时可以自己加个入参判断之类的去代替,为什么这么说呢?
大家不信可以自己去验证一下,无论是Python还是C++最后都要转化为汇编,而异常处理转化为汇编后执行的操作要比一个入参判断多很多。