初学python , 基本不知道什么是异常, 不过有个东东,可以理解,比如。
<span style="font-family: Arial, Helvetica, sans-serif;">int("hello world")</span>
会出现 ValueError , 这就是异常, 因为你知道int方法是用于数字对, 我不知道其他程序怎么样。但是这个也许在编程中特别重要吧,因为不希望有错误了,程序就不能运转吧。
异常通常有几个:
valueError : 不存在值引发的异常
indexError: 越界引发的异常
TabError: 缩进引发的异常
syntaxError: 语法错误
这里有详细说明:http://www.w3cschool.cc/python/python-exceptions.html
通常用于异常的语句有:
try:
int(s)
expect ValueError:
return None
看上去try ,except 像 if ... else的节奏
try:
你的代码(可能会导致一个运行的错误)
except:
错误恢复代码
但是:ValueError 又是什么呢?
python 特别把异常做了对象, 这个对象就是Exception ,通常我们的python是自带了这个程序,所以ValueError就是调用Exception模块。
我在阅读, <learn python the hard way> 中 读到了raise语句, 书中也没有介绍,百度了一下,下面是这么说的。
raise语法格式如下:
raise [Exception [, args [, traceback]]]
语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类:
以上的解释, 还是无法看懂raise到底是撒意思, 看了书中的例子,似乎是用户自定义异常,接着看。
深入理解,异常:
如: print 1
print x
traceback: X
NameError : x is not defined
于是可以:
try:
print x
except NameError:
print("没有定义输入x")
先深入了解,try except 是做什么的?
怎么理解,raise呢?
>>> raise IndexError
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
raise IndexError
IndexError
>>> raise NameError
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
raise NameError
NameError
抛出异常, 第一个抛出IndexError ,返回见上面, 还是不好理解,继续看:
class MyException(Exception):
pass
try:
raise MyException
except MyException:
print("ok:)
显示ok ,自定义了一个异常MyException , 可以加点料
class MyException(Exception): pass try: raise MyException , " and some addtional data" except MyException,data: print("OK") print(data)
显示 ok, and some addtional data
发现之前介绍的raise 了, 继续看书,回坑填一下
备注:Exception 英文,是例外的意思。