18.python的异常处理

  python中至少包括两种错误:语法错误(syntax errors)和异常(exceptions)。

1.语法错误

   语法错误,也被称作解析错误

  aaarticlea/png;base64,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" alt="" />

  语法分析器指出错误行,并且在检测到错误的位置前面显示一个小“箭头”。 错误是由箭头前面的标记引起的(或者至少是这么检测的)。错误会输出文件名和行号,所以如果是从脚本输入的你就知道去哪里检查错误了。


2.异常

  即使一条语句或表达式在语法上是正确的,当试图执行它时也可能会引发错误。 运行期检测到的错误称为异常。此时会停止代码的执行,而大多数异常是并没有被处理的,所以会得到这样的异常信息显示:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAegAAABSCAIAAAAQFND8AAALqklEQVR4nO2dS5LzqBKFWcnt4d0CGzK7aNcKLjOPegkaM+uBNvE7bjQr6NoEPRAgHslDsiSb6vNFhaNKJTIhbY5xSiaZuRQ1MXZn4rmx2VNsaPUUfNabe/bD+Jb8Kw51fqSn1X60fAj1uhkAQA4jjz4F+2L2537w9FPTHl3obgW9WMmD1hPGfU8QAd5BATgJWrhnqfwEfkr5faTHc4X7Kdh0hG5/S3mIeL3V+6XCTfRZiaPf9QEAxhRX3MqsE1ipQyXsVOE+arV42Krzrd6vFG6yVXLwvVEF4OdAC7cxJppmStjUp5aPIAe6pES/WLDI1fKRJFhsE/+pWU1MTIJ9MfaQ9lCHHbf8byS71z5/S35n/MHZnd8mvvrK+rPmhe5cfrvB2iOkr0I0csutaNiM/yz5Go2m94JlIoYHCXduuTtiUGoATqFPuO2fbqKmJ/hf9MyX6R0ecSJl26ppkQAtH+uRph0v3HUhCPusJsZn7R/j/hDeK2MnHSXRyEfaG42H1FnP696L8WnZ2SHcdRd1yxBuAE5hk3Bnk9Atte7FKa2mdC1Gzf9uO+vCuUBwQWwxEj4WvNuVb3glrUe4+0e6MRp7vOcxLHVge6qEttwRMVwoBuAcXhFud0TLR7pS9peq/BrTGK3dGrOw5q3Zsed8y1vjRgUlnLiTwk2suOfo/Hhoxfx+Ho18pJ3RKAt30XsxPkEMyU6+sOJeLfdG7FvyQy4UAwASSsKtZ04nMaM175Lt5beJp2cmOeUwWz1LtRhfZ3XLzpJUndSSuW5Iz7LoXjKzkxD+0XYpzUTbkcY3PrrhkwvGUjTyjHYjGnYBfhdqzZs3vZcsxzH8v0tM+3O+syM59Dmx5b87I0Yst5E5AeAYKivucdHz7dhbGMFW8BQAcCI/UrgBAOAnA+EGAIDBgHADAMBgQLgBAGAwINwAADAYEG4AABgMCDcAAAwGhBsAAAbjY4V7+XZ48B1xAMBOMJt+GocLd/S15v2lsJYvTL+2S5Hk5rI9jhq+lGHMcFn8v5a1//af8xY646xlIwhbOTYg571arnwd0myfTYWZ+zP2qe9Ez7yoXUcW+dvFfuEulDfLv+u8J9xL2Z2k+M4y85ef5gtQS8OEVUwmjNGG9zXcgfVljDFGCXqWlo77/7b2Pew653rCsTepB2ErBwZk0yg+xHI/5GzqgNpJ7YidDKi943t4xbua9rzy6trVVrbWNtT7eWXFHWy5VwvoQe+Tap0Akrf0VxvuNFpyO739LwcT+DLGiMKi8izvCWqXl32tTDr2JhcFoQI50mQUB8bwPMtXcM4KV4l7bSv8M9jt6FXhPm+Mrwu3mph41sqbHdP1UKy1Mv6VLCjhCD+c+hPIM18n9LUsrwS1wjrJ+yFedvdtaxLgmiBs7UAyigNjeJ7lSzhDdK7Ps+uZ7x7F68JtgqopR/KicMf760d7k4anxUfyEl9NtOHcdJ4efTj1DQMLkruUiz9NrRkYm5DhRrlfiq2yD8LLilIEXbWJ3Zvh3PwhrAV+M5wZV6os8mJTOtzcuGGlc6j+KLHmkRg3fxZG4U+LLLPYfkc0orFrw5m53QxjRkrajn8ueOBdcsOCI0VfiZ2gV0EhhyyH5o4s0kmPNEtz1aOxJtzc06TfYTkkiaG3E8Zzr07GMzed3VThPdOc3WpyTbalSjq9ZwSVVTaUM3RbGfNHXDExLp3YrWwnVBQ5aMWdHsxP8+Tlu3pcdScKE4n3DfNfwibCmPBiV34tkexA4sv9uS6RlJ02a8JduIMqftsIjSs3Cevn5P2h7CSjWAdYsuxGoUQ5GtnYl/cqIYIPQ4Woqo4jka+8P3m3c18+R1EZaTYKOhq5ZZFdF73ScgIVQ6sS2txeunjbnMt54b3m7PZNwmIm+/pDlv1rNukpZxgc2VCpqjL24z+7HJLjrh8kwv3VLIYbk7yaVfndK8mi+oahBbsSEfGfbJUM8naFpFXuK1wfuVdmZDB/JEdX6nPSpbw/JTshIh5pj3fSTjJ2yY2UqdlSVHt+qUcjD07nM5gczHPuuReWRSx9C7nWcmlQ4ZnL+6i87V5r2+50zOVc1+qzO0xcbJWzpvdmq85yhj2/kP25rmT29cKdl+/qcdV1ZTJ/lfvbGIRPDrjGPv+43uqg13xC8skmb5X7EsFHYG+ZS7v6E8qaDR+TTiZ/1s7J+rOeo43SRJPwBM6Krfy4RJBOSeyQcWYiemoqUfWiRjw7ZV/+nDwgpC+//Awq+dAjJUOUxtBZ1tIIZbSkOnO+5Zw8hsatIcr5g+7k7Gbhbs/up8hX3Pv60ync+ZnNcobuiBJpbdj1SO6XHPvHXZyMa5stBDW9XEVEqhRWXuKrgyQ5uxCta8g8uEoXNUSq2qUFGTd/KWIdRLTKfMkgJS18P5U1e+OG/dcwZoQ03D1yuXbPu7OOxPqv//1BdIlMuPtUeGkUvj9SrOlgOsm+KDtph4qzlkYZI5MUR5ycldL6CkfBedVX0p+ASMczX+sRKj7JNY+QUjQYN3+5hLIOn+IrLVML+SiGq7N6gqWdpSRmbjq7C4X32rPbSQcL6no3cyad3itDFqq7nKF1dxdicgOxN267I53K9pm3A34WorbEGNjXp3Hg2MXu62bqlWtuxpz5DF782iBjWL1f9tO+P/lp/RmDMYR7vbaOH/zgZ+MP+HngWQUAgMGAcAMAwGBAuAEAYDAg3AAAMBgQbgAAGAwINwAADAaEGwAABgPCDQAAg/Ehwn3GN/rtxo/vq7QEAACn8CHCfUxJpIz3lsgDAIBT+BDh7uJbyo0qDOEGAPxABhLuHSoM4QYA/EDOFe6l0s8k3OaHfgNGu4+i3eL2q1mUKNjUsZK2zqpHqyn0vrBrU1kAAPgczl5xq2mR0WjT9HgXb3uwWZRo63bppHc9c7+fLxbjAIAhuUC4K7V/8tNKrUoNEzMiXpV3egcAgJG4QLiTskAvC7dSjcKgUYnPvCiRr86z9VInAAB8BFcI94O7vHOQqn4E1Zm+uooSuYpHldz0cj6/TZzdufzbqFmqmYdZ79Xd419bwwYAMDiXpUoAAAAcw+l3lXwRlyIBAADsZ6D7uAEAABgD4QYAgOGAcAMAwGBAuAEAYDAg3AAAMBgQbgAAGAwINwAADAaEex9HfbEIX1ACAGwGwr0PNTW+VdRZOK1px1t7r77rmbeG4/bLDffU3dXnDl8A/LuhhXvZR/vptwfZ+9XH5ZuTXz9t/2s9cz63dzppKlenHXNaabdN1IeT75f7Sp/f/kYFwEdTWnG7naxfnUJr86d8u/RczBjq071LYn04xw52jNAB8C4qwi0mpQ4S7pPm4YdP7w/v3kJ/JyHcAHwKNeF+KjnrdQqFhcG+Jb8z/uB2D9WkMNid+QyA26M1qVLmSpf9IouZJXZK5zSgSqDtHEUXZxVOS0u7GRPkoApZLHrs6bj6CsK5zXL5g3x2goETT/Sm/pC+AAAZVeE2apaSLCLzy9Yo8I9+y+xlEvprbvmKOy9dlh9xdhoFz5rkJdD2jaLT13mF00qFJupNkrHnUe0xFbSqxSe30yxHl9vJfQEACOrCredbsPYJCoP9ihQ5kqpC8TBfuaY5w01JZ7fPZKr5nlF0ejuvcBoZovpngor3Ayp5ZvHpEe6mHVSYA6CLunAvyYR4Lmn5KEpecJuE1nGhMn+PQY9wkyvuQ4R73yi2+DqlcFoqgrPNNlTCko+9uuIuFoRzrZS41+KzQ7hzO7kvAAABLdzrXYDhh9agMNjv//nti7FJCP9oE5dxDje9HTAvXUYWM3N2whw3VW+sebmMKoG2fRS9nFQ4LS3tZnwVt3IPC2MncvfdBeGEmPxpSXzcn+TTWitHl8c59wUAyMAXcAAAYDAg3AAAMBgQbgAAGAwINwAADAaEGwAABgPCDQAAgwHhBgCAwYBwAwDAYEC4AQBgMCDcAAAwGBBuAAAYDAg3AAAMBoQbAAAGA8INAACDAeEGAIDBgHADAMBg/AN5WhHi2FigTAAAAABJRU5ErkJggg==" alt="" />

  打印错误信息时,异常的类型作为异常的内置名显示。对于所有的内置异常都是如此,不过用户自定义异常就不一定了(尽管这是一个很有用的约定)。标准异常名是内置的标识(没有保留关键字)。

  python的标准异常有以下这些:

异常名称 描述
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入ctrl+c)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型)
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
WindowsError 系统调用失败
ImportError 导入模块/对象失败
LookupError 无效数据查询的基类
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
TabError Tab 和空格混用
SystemError 一般的解释器系统错误
TypeError 对类型无效的操作
ValueError 传入无效的参数
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

  当然,异常的触发并不绝对导致程序的终止或崩溃,因为我们可以预见性地处理这些异常。


3.异常处理

  我们可以使用 try/except 语句来捕捉并处理异常。

  try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

  如果你不想在异常发生时结束你的程序,只需在try里捕获它。

   try 语句的执行顺序:

  1.首先,执行 try 子句 (在 tryexcept 关键字之间的部分)。

  2.如果没有异常发生, except 子句 在 try 语句执行完毕后就被忽略了。

  3.如果在 try 子句执行过程中发生了异常,那么该子句其余的部分就会被忽略。如果异常匹配于 except 关键字后面指定的异常类型,就执行对应的 except 子句。然后继续执行 try 语句之后的代码。

  4.如果发生了一个异常,在 except 子句中没有与之匹配的分支,它就会传递到上一级 try 语句中。如果最终仍找不到对应的处理语句,它就成为一个未处理异常,终止程序运行,显示提示信息。

while True:
try:
num = int(raw_input('请输入一个数字:'))
print num
break
except ValueError:
print '非法字符' print '我在try之后'

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOAAAABrCAIAAADhOBmtAAAFoElEQVR4nO2dwXXrKhBAKUsNfcpwOtDOVWT7tXcV3qgDN8FfOC+PD8xokPDxRLl34SNhGJHD1YAkOw4JwDHh3R0A0EBQcA2CgmsQFFyDoOCabUFDKOvUJc3yZrUQgtR8H3q0/F2l5tguwUBMA/McvyBQVCuaKAGHoB+ifu2NA+9lz6g0c2ruqyVvDRFi0zylJ9L5Vp94NpZ4CeEjhMs0PzqbgkzfMFjSZ5FukyDQcUG75EvqWXS0e495usTluX2P4TqvHY1Bw7QGrYe/rtMsV2J21ZciNDfyOpZqlmOprdb5Os2PtN6mcJ3XXFY4zJg1qD5FHhe6aCsFr41sltTRpJ43j1jymKfrvKYlXqd/buufXRhDh6CpNbr1rvQq1SzKdZS+KR3WO7MZbYN7DJ9Lusdwneb7Ol9DvHfHAIluQRVj6rekpNXc3vkHmG8ebQq6szP3GD6X9TaFjxA+wnQje45kTAaVpHyXoM2zqOiMPVtLyfuLxzz9vXL/Wo/CKAZn0CTLWoRSSrqQmjdPqn3pc0PQlNI9PtMn95iGYxV0MxcmOWtKCViK04VdLH2KP57L4RXsn+KVDFo00c2oI3ehTPF1r5pNmrMBOIFRAdcgKLgGQcE1CAquQVBwDYKCaxAUXNMnqHJHU7+Hr1feHQdOzzBBk3ozXK9clBcPS6Unq/Ab2B7yWhGLNM1n7jp5q+Yu/EJGZtAkWJi31SMDFIwR1FKy40CjosHPpePTTM0pPq9TNNkMJS0ShusOP5fBF0nK+lIJWAeRonX1Fk7A4DVoXs0YzRIfNX8tI6/iQ3U9VLyrU8RpRobfxvgb9cG8GNWPosSE38Pgq3j7GtQiqKUynJuXrEGbrfJd/YqnuTDoOiKcBgYeXIOg4BoEBdcgKLgGQcE1CAquQVBwTYeg+aNOvdrRTo2IzA3Uc9D3cbvv3WKjqDyqc13BN59dwU+kLycVGyl7tqQzttN69+BMHBVUqiOxznPvDwwYvUfQU9L9cTu7JS1jlhjG/AJGHfy9+RtexMgMupHSlpg5E//92o3LOk/PkvRdlPLNzQPpvYIfzSFBi3xpmHOLDLrEEMKU/2jLEv/sLnP7x1yMpwecg/23merZPBdXmGFrQcscuc7TNK9pic3kqVj43Qem+DNhHbxipC2TrJZBl2XJd//Hc8pv+KmrVp82llbgHOtFUqoS5Pd2XrNoWAX7Wm+GuORL0qmYzP/O83q0xrsIejK616CFCp2Cmqindyk71sdiij8ZO6f4ZuHhVWD70r04RB1ZX3sg6I+GwQPXICi4BkHBNQgKrkFQcA2CgmsQFFxjepK0WdIslx6Hjr0xaXzCpNfkXqlbrF/5SPIHLotqRRMl4BD0Q9SvvXHgvewZFemRkvHRjl6+oyfG1FgneJ3u3txjvHc3Ap2+YbCkzyLdJkGg44J2yZfUs+ho9x7zdAnhMs2Prr8Atun4NFNeUtdplisxu+pLEZobeR1LNcuxDK2WeBnzbRbIGbMG1afI40IXbaXgtZHNkjqa1PPmEds85una/goAHKFD0NQa3XpXepVqFuU6St+UDuud2Yxm4h7DJwl0PN2CKsbUb0lJq7m98w8w3zzaFPRIZ9bbNN1IoOMZk0ElKd8laPMsKjpjz9ZS8s5ZPgOX8K9gcAZNsqxFKKWkC6l586Talz43BH1ewn+E8BFIosOxCrqZC5OcNaUELMXpwi6WPsUfz+XwCvZP8UoGLZroZtSRu1Cm+LpXzSbN2QCcwKiAaxAUXIOg4BoEBdcgKLgGQcE1CAquQVBwDYKCa6yCCv9QFuC1GARV/108wEsxZtBhv84B0AWCgmsQFFyDoOAaBAXX2K/iuZKHN8CNenANgoJrEBRcg6DgGgQF1yAouAZBwTUICq5BUHANgoJrEBRcg6DgGgQF1yAouAZBwTX/ARApqlomODIOAAAAAElFTkSuQmCC" alt="" />

  示例中,当我输入一个无法被转换为数字的 @ 号时,本来应该触发ValueError异常的。但是进行了异常处理了之后,当我输入 @ 号时,异常被捕捉到了,同时执行了except中的语句,并执行了try之后的代码。但因为是在永真的while循环中,所以又执行了一遍,这时我输入了正确的数字,所以try中的语句能继续执行下去,又遇到了break,循环退出。

  一个 try 语句可能包含多个 except 子句(至少一个),分别指定处理不同的异常。至多只会有一个分支被执行。

try:
  '''尝试各种操作'''
except IOError as e:
'''捕捉到这种异常,就执行这里的代码'''
except ValueError:
'''捕捉到这种异常,就执行这里的代码'''
except:
  '''如果发生的异常不是上面的两种,那么剩下的异常都统一这样处理'''

  最后一个 except 子句可以省略异常名称,以作为通配符使用。但是正以为它能捕捉任何的异常,所以一些在意料之外的异常也会被掩盖掉。

  我们也可以用一个except 子句捕捉多个异常,做统一的处理:

except (RuntimeError, TypeError, NameError):
pass

  这时又有同学好奇 except IOError as e: 是什么意思,下面看代码演示:

while True:
try:
num = int(raw_input('请输入一个数字:'))
print num
break
except ValueError as msg:  #等价于:except ValueError,msg:
print msg

aaarticlea/png;base64,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" alt="" />

  发现是报错信息,和不做异常处理的下面的一样:

aaarticlea/png;base64,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" alt="" />

  看看其类型是什么:

print type(msg)

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAANEAAAAXCAIAAAAa6T0RAAACgElEQVRoge1Zy5XDIAxUWTRk9bENUM1y204ohj3YQoBkbCcE+71oTjbhMxKDJBxIBsNcwN0EDF8H05xhNkxzhtkwzRlm4yGaCwgY7iZhSClN2IvHaM75eC+Bm0QfvQMAeNCR+/henNFcwM86JHp3s+JSin4ZTiEgAIDzMStrz4+XFb9OvWHk7uh7MVYBh5pr3RG9f8yJfB2TrIjekfOC72j6hSjLQ7ozj8LIPNDXXOGzD6x9H6ZZkfNUDKEjjJc1N3M7huXcnubaReqA/kvvGPJP+IMAgMhJJaWUM8tFytWonKfWB3I0VUPs+XqtIPnItFTY0V0dvXelGTzTvmWbDwvJScqN5lbOoXjQfJgXr02gJP4rWpR59vp0dmSEwjuaU89Q08iypAgfcOXOhUF+unRQ5KjV4rLwit5ll6+s5CjJRzWtaaHePCogb9Ta81SM2Uiz5NThwqttH9WuJs4FbNUvW3S7TkeDMWG1n1sP94bIc5Ep/VUGlvOM1VEBK/eo9JpRZ/ZYtqhWqPMc7Vj0Dn2VWJnjec117EophJ0z0Gm5dnJ2ZnsRV+8Q9LrZmShYC1kocS6lGK/HuTyK4hzH9xzn8p1AjpJ8VCvOxLl2t6h2729GcxOkzsxdzpDpIWT7FLvop6VhKOY5ZVcf8+4QtB4vp31OqnJmQHCuqQ60EuYY1aicAup6js6/qB1zF41PY0URRATnsp6DLZutBROvVK6lWNh+aNiC47I4AOf/eBa2guor5IqutqstSot3Wba22TW37fU5NOE9DPgmXBN62sX2aXwMb2lOue9tTbd/4iU8jY8hPea/L8MXwTRnmA3TnGE2THOG2TDNGWbDNGeYjX/EBHO7i9313wAAAABJRU5ErkJggg==" alt="" />

  看看里面有什么方法:

print dir(msg)

aaarticlea/png;base64,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" alt="" />

  非常多,一行显示不完,不过多数是私有方法,我们重点关注后面的args,和message。

print msg.args
print type(msg.args)

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAApCAIAAABIul7gAAAErUlEQVR4nO2d25ncIAyFKYuGVn2kAaqJ3lLJUszkwcZgrgJrLrs+/8N8Ey+WBJgD2B7FPAAAQBvz7gAAAL8QKAsAQB8oCwBAHygLAECfobJ49+X88d1a57fPJ8cF1Dh6MO1KUMJkiFfKDMfFHVt+oCxMSWN5Z4n3z+Pv484Y4J01xpjcTqsLy5ILdq7S8HWxaIf1WlR6UNk707h+kjJv59RUE2Uq46JgseV/MF1lOTcHO+fDZyyhI8bltduyPLzKhXauIxnt3tmt0EWBW61FcUFLRs+89+XZXg2m1HiQ84m6NlYcmyQaY6z7bpSpjYtqhPda6feU5bnXwqKrWWWp4J3TqNb7h1NGWa+Ke6WIzr7e2hT74I/Go5xeHM1MhzYdU8Qla3datnSU5ZUt8Upl0arXpylL6avqXSWkzMjbmyI1nq4sUmmZDWC345011nmF+O8lLReUJZ8r9r20czasQ+PumimWDEvV1PrZVzELxYPWdueOkZ1jcZse3wNKQjbE+0FxzAXHKbO+KnUatHOjXtPKwmQMEZn9M2zjxm3IlMVTN77ZjmXKVo2280L9xUdaqdb3WbZzvbNEzBq6AGXZWZiImOKgIX4kO/S4DT1O6V8B2ZEwEQ1WpZJ5u2E5zm9M+ZUsjHkYT1KLpi+JnaKdRTUdh701AROxZ/adUyTxlH4NcVb3rFVrt8ny3mkZf5KyMBlrHac7o1WgLAHBLrW1Kj6+hAdy2a58PLsOLUviEVquzMC5C1HMw3gkY2nNTt1UpQf7DymYrHPFcxyV3qmVqbdqqrVl7/SNP9q7oVk2O0zW9laUU/ZuJCz9Z0PjfhFcYelGKP3TafUhXlmEmU8WT/cIc6J9mxPv+6cMYh7GU12zaCvLXq/9WNaDo8ubadto1ZdsxZHdl1BZGnWPrXqsbLOZaQvdy9YsT7mDO2Or3gg3E5ap91mKv51nk/DvbQkZZb54ZrlPS19f1hjr/iX3I8q7BrEz9tsLlAnVgRfaKd8wSbf7ySn54OrH3A0olqncZxndRZC3c+3Nmdn3WZiIH8leaNyGrXhyw85xfj/p3KrfaZNVe0fUPsk5A30cUwtoSPudlzsx9Q4u+IngHdxXUn3n5Y4tj98NAQD0gbIAAPSBsgAA9IGyAAD0gbIAAPSBsgAA9IGyAAD0gbIAAPT5BGV55S+17vWrMADexWcoi0a2LVlayLtl9gLgPQyV5ZwGUB/dfN39JUkj2+CTawjADekrSz5QlfI8iljytbbZwRYJAGU6ylL+PPPzb4gsR4hdEgCaNJUlH2ppCh5Df9MfzIevf448h628AULOvoKHypfcV6kscu/3+507AM+jpSySRIdRfELGnjIjoTDb4DCAaja2zFd51pR37IkAUGMqD25528WGvKlZgdP4n8+dU/rq5HnsZGyUe4esAKDJ1B3cMh9i9p8WlhkJhdkG266zfIgxW2Xpqwx4JdchAOA6U0+da6+MnPYZTKbIRzzMNlgn9xX+5wxK7rScfFWyVcq846kzAOpcfVPuPCw//+ERAOAVLCtLJZnyfuglj29f6QsAMMsnvN0PAPhtQFkAAPpAWQAA+kBZAAD6QFkAAPr8BwAhw/fDS5mgAAAAAElFTkSuQmCC" alt="" />

  看来是将错误信息转换成字符串后保存到元祖中。

print msg.message
print type(msg.message)

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAU0AAAAoCAIAAAD13D/OAAAEJElEQVR4nO2dW5qkIAyFWRYb6uxjNsBqJm+zkmExNQ+oIESISI0Wdf6H/qptTAJyuKiVNi8AwOyYuwMAALwd6ByA+YHOAZgf6HwCvPtxfvcBiDAZ4gFlPo+mzgdU2ztrjDG5HdFyKCt7PGPnKge+Lhat0F8LJhvF7Z3tMVP3ztSun6bM7eya6kKZz6Op81FTRNmTjiw3+5zSznU02vPOhkIXh5veWhTC7uqnTe/3z4RMqfF1cD1RV++sVDoMUMYY6/4elfl8/tu6Xd8JzupcwDs3osPd37kzynoJ7gdFtPd1a1MsUozG4+B2cfZl2kaKbcCekil1PqrDPU3npS/R+5CQMiO3N0VqPJ11U6GfDWCx45011vlJd+aBqs7zcXTZgzln1xVT3JUxxZLroipttn0jFiN0PGhtdVxt2dmWYenxJaAkZEO8HFTHXLCdctaXUKdGOx/U67TOmYwhIrP8XDcc7TZkyuKRjQfbsUzZqtF2Xqg+MaeVOvp8lnCud5aIedY7cIGz9+GYYhcmfiU7O3ZxiE06x/H1yI6sg3Rj/aSZ0w4sx7GfKe9Xypib8SS1OPSlsVO0s6qm7bBDEzARe2ZfOUUTT+nXEGd1z1pVur2SX50j42/SOZOx1nG6hp+PDp1nFyxcp2I31555mpY18SgtC7NT7kIVczMeTc/usyObEsRRv+XOZJ0r7o0PuTpSGblV05GvvDp146/jdftZgh0ma2urrSm4rvP9kj39025mVs+666ygi6d6hDkZiYIT7+unNGJuxiPO56N1vtRrOZb189aTNaawJZCXM8WRxZdS5wd1j626rfqyeSKE7nXz+Vvuw1229Wg0+/NtrFt/D4udOAQWT2WWIfvnxxpj3Z9kH1vuNuPVW7allA0bG15pp3yinW4Tk1Pyrl6PuRpQLCPsz1u7T307S0/qzz4/ZyJ+Jav2dhsexZMbdo7z+xD7Vv2bNpl4dVTtk5zTGK3aSAFNCN6HmwC8DwcaQOcAzA90DsD8QOcAzA90DsD8QOcAzA90DsD8QOcAzA90DsD8PEfno74tNPO3jgDo40k6H/N28cxvKQPQh1Ln+6Q94xmVr0e28+7oAXg4Gp3nK+FBWZk66fKOxTz4ahR5IPMvQN2rmW7vWM+D76Wh81wcaVIAQ7/TrymuH39tWYmOvq2pJnpbM47svG/O61mZNjpzHgPw8dR1rklLFIeCNYdAmT9ImRuoy/uJ0QOrd/CldPyfhnK7btecY1mB9IOUy6BNlmOo9K6XLkQOvpeO+3Bl9qLsn6iU+YOUuYFyv0WOodJ7X1YmAL6LjudqUvai3XqcyRSZ9Zq5gQTElD6Jd2VWJjxXA1/PmPdk9kLC5AnAs7iocyEt4HIID7EAeAzPee8VAPAuoHMA5gc6B2B+oHMA5gc6B2B+/gEbzF85KP9f7AAAAABJRU5ErkJggg==" alt="" />

  看来就是把错误信息转换成字符串。

  

   try 除了可以配合 except使用之外,还能配合 else 和 finally 使用。

  else子句只能出现在所有 except 子句之后。当 try 语句没有抛出异常时,需要执行一些代码,可以使用这个子句。

  不管有没有发生异常finally子句在程序离开 try 后都一定会被执行。当 try 语句中发生了未被 except 捕获的异常(或者它发生在 exceptelse 子句中),在 finally 子句执行完后它会被重新抛出。 try 语句经由 breakcontinuereturn 语句退出也一样会执行 finally 子句。

while True:
try:
num = int(raw_input('请输入一个数字:'))
print num
except ValueError, msg:
print msg.message
else:
print '没有异常的时候才会触发'  #当try中使用breakcontinuereturn 语句退出时,不执行
finally:
print '无论如何我都会执行'

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMUAAABSCAIAAABrOYdcAAAE60lEQVR4nO2czXHjMAyFWZYrUhlOB75tFTn7nipySQdpgnvYmYxCPDyAFGayit53yCgUfyDiE2xrN25diDraTwcgfhXySVQin0Ql8klUIp9EJfJJVPLNp9ZGvWwLbIfdWmve8DX4bPuzpGdtSGIAC9Qchm7DELxAXf74Evbn7DziOMHOwoq11ytTFUryF4pCIvFuD3ufZHnftvfpQVeApScsTkMx606+j/s05Uqn0h8N7/Nxu7d2vz0+p67gKoDcDC3jgESGjvT3ZoAH+z6Zbpm1EqOe2317zk59DabfP/HXi+P+DWO9ya1AsMXO5kUOV8R8Pm5/Hh8L13MB3A90vFDtE2Z/ej2Hdg6IlTZmgglnS/G+tVeVJwzziSTYnvJKAjxejDX9FCD06UgwH2+325vKE2a6PnkO/ZRPUPohmHwt9Erjnudr04c7j/X61H23hqlIy1ys0fOIpL78FAvy34e7l9ZemkoUxH1DSipN92uSV968eeZiTXvAX++OV0rhkXq9I/VpGMITaWeei9V/vbNRwSGw1opCtLOiEvkkKpFPohL5JCqRT6IS+SQqkU+iEvkkKpFPohLg03PTfxYTi3z36bm11lqTT2IRW5+em3wSq8gnUYl8EpXIJ1GJfBKVwM93+ownFtHzTFGJfBKVyCdRiXwSlcgnUYl8EpXIJ1GJfBKVyCdRSfb7MPDg6AsFIN5y3pz8mxQIJV/IsfC9Gt7fxfPOv+Ov4N0rz3xXSclee1+twfvvf/WkJy3hrZK8EPKVCuQ2yByflJQQwzEn7JafJxzYO7u/YUZJmsN9CDeHxPOLHdozUUWmMrGWp+Gs3XfSAhWE/dcUJ5HzFjsPX+jUhq2/NZnddHgqP4nd6IZ84gvZUZnLhJNARbxT3rqnVgfivpvhaYYbYTdrQTviEzyA03o9M6PsVngdwlHyaXeCvi0IReGT7FtCcT0LhwyRAxu5F493vXlszNwnvoGnY/r9uNeS6ZbJXyYG7pM95TV68ZB1OTC2zF3B4zkRLIswK1+nvA0lZ/PdhkhgGO2ATyTHcJS3ReHOhPF70Z6UxYqS3GU+m7fdsz7Z5JHlyKJrFwXn9NaClwbnPCkswfuEjcMSWz+l11C09sdcFy9DYTzJqmBHedhp7X567d3Z59PhvpbxxoUOXmOyf6aWDB08nzKhepOQFeHwnjAJjjopJw5d/IfIJ1GJfBKVyCdRiXwSlcgnUYl8EpVM+xQ+NgzbZ/v0789yjszDO2ceSi0sdynw8zTy/Lcf+zcZ2IcsZ3/lMdgJvRV5wCR4G9vZH0IWcvQuzKcHupJcFw6Bzg3xEPXJKlOxiT2HfPISYO3xPEiumxzCy1go0D5aWHjCMMS0T1CR4VQ3W2+zMnSG8rUI2McuSkSBMdv47bZ48Vyc8eUgzF/P3aYt8okceCkkKw7t3jycjE/QG5n0RSAE3Cl+Q8M+5T4NE9qqA6PiJIuWfCIU+GRv2TD9/AAmbH/KyuSFvY+Q1104jxdM2HJZgpeP0CdvK0mdgBrB6gJX8WzL1CeeeKi1fJqC6eIdJ7N1fB7oBx8+FCQSHl8X/kzOc2WyW9xpmr3OsALx4gfbYdUhk4c1zAZjpx3GhuGJ3hN/H8w9CEUh9zfJum2EPTPLcayUvJs9JqMuiDZCVCKfRCXySVQin0Ql8klUIp9EJX8BpCI4Ruk6XWkAAAAASUVORK5CYII=" alt="" />

aaarticlea/png;base64,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" alt="" />


4.手动触发异常:

    raise 语句允许程序员强制抛出一个指定的异常。

aaarticlea/png;base64,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" alt="" />

  要抛出的异常由 raise 的唯一参数标识。它必需是一个异常实例或异常类(继承自 Exception 的类)。

  如果你需要明确一个异常是否抛出,但不想处理它, raise 语句可以让你很简单的重新抛出该异常:

aaarticlea/png;base64,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" alt="" />


5.用户自定义异常

  在程序中可以通过创建新的异常类型来命名自己的异常(Python 类的内容请参见类)。异常类通常应该直接或间接的从 Exception 类派生,例如:

class MyError(Exception):
def __init__(self, value):
self.value = value def __str__(self):
return repr(self.value) try:
raise MyError('错误信息')
except MyError as msg:
print msg.value
print msg.args
print '-----', msg.message

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMYAAABMCAIAAAC50l+0AAAB/ElEQVR4nO3cwW3iQBiG4SmLEtJIXEbSAd1wTxV7oRjvYVdZh7FnxtKnrE2e52SMGZD86jeQiDJ/h19TeSvlfbp9y7MNuE1vpbyXy8f9747DvcLzKv/7BfBsJEWYpAiTFGGSIkxShEmKsH5SpZTVm/XGn+2lxlL1vY0n5UQCSXV3dpda7tnSfZ0cxFBSnye1e6YbSW2tsFxnKx1JnUjnVDWiWT3NjeBGsjClnkA/qcaIWu4fWedhzToXU+oJ7H4v1TimPV1MqR9iX1JbZ7oMXONMqR9i9ML3OYce7q0PG8yu+3Sm1Ekda0p1F+H4drxPmntTqj5+6+DV/fVjd004DmL0YrTcbkypuo/6ZmNKNcJV1VnsvvBt3VXfnNemV+NRjSvs6uIck/NEmKQIkxRhkiJMUoRJijBJETae1P36er1/2YAVo0ndpsu/ju7Xix8PYMNYUlVDXwqDhaGkblN5nEoru2Cex5JazUdTrJMUYZIibPC9VPVm3Ic+Nox94quaUhRbfC9FmG/PCfM3PsIkRZikCJMUYZIiTFKESYowSREmKcIkRZikCJMUYZIirJPU9PjrYi8vmT3+OeZpmVKESYowSREmKcIkRZikCJMUYZIiTFKESYowSREmKcIkRZikCJMUYZIiTFKESYowSREmKcIkRZikCJMUYZIi7DeKu3h6ZKcL6AAAAABJRU5ErkJggg==" alt="" />

  Exception 默认的 __init__() 被覆盖。新的方式简单的创建 value 属性。这就替换了原来创建 args 属性的方式。


6. assert 断言

  assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。

  格式: assert expression [, arguments] (expression:表达式,arguments:参数,多是字符串来说明错误)

a = 1
assert a < 5
assert a > 5, '根本没有这会事'

aaarticlea/png;base64,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" alt="" />

  当然我们也可以捕获它。

a = 1
try:
assert a > 5, '根本没有这回事'
except AssertionError as msg:
print msg.args
print msg.message

aaarticlea/png;base64,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" alt="" />


  为什么要处理异常?

  因为这样更保险,你不能保证所有代码都是对的,而又不想因为某处的小错误而让这个程序都无法执行,这样代价太大。所有说凡事try一下,没有什么坏处的。

  关于异常暂时就说到这里,有错误或不足的地方以后会进行修改。欢迎积极留言讨论。

上一篇:基于Node的PetShop,RESTful API以及认证


下一篇:7 linux服务器程序规范