最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Python基础教程:异常及处理

XAMPP案例 admin 63浏览 0评论

异常

异常是程序执行过程中,影响程序正常执行的一个事件;异常是 Python 中的一个对象,表示一种错误,我们需要捕获异常并且处理异常,防止程序终止运行。

我们可以通过 try……except……else…… 来捕获异常,语法结构为:

"""
try:
    [执行语句]
    …………
except [异常类型] as [异常参数]:
    [执行语句]
    …………
else:
    [执行语句]
    …………
"""

执行以下程序:

def Test(name):
    print("我的名字是:" + name)


Test()

这里的异常类型为:TypeError(类型异常);错误参数为:在 Test() 函数中缺少一个必要的参数 name 。

 

这个时候我们就需要捕获该异常并且处理异常:

def Test(name):
    print("我的名字是:" + name)


try:
    print("开始执行Test()函数")
    Test()

except TypeError as e:

    print("该程序执行中出现以下错误:")
    print("异常类型:\t" + str(TypeError) + "\n异常参数为:\t" + str(e))

    User = "小九"
    print("给Test()函数传入一个参数:" + User)
    Test(User)
else:
    print("如果没有异常执行else")

drg056

当执行 try 语句后的程序出现了异常:

若通过 except 匹配到该异常,那么将会在其中处理异常,当异常处理完毕后,控制流将会通过整个 try 语句。
若通过 except 没有匹配到该异常,那么异常将被一层一层的提交到最上层,使程序结束,并且打印默认的错误信息。
若 try 后的语句没有出现异常,如果有 else 的话将会执行 else 后的语句,执行完毕后,控制流将会通过整个 try 语句。

需要注意的是 try 后面必须跟着一个或多个 except ,当然我们也可以使用一个 except 来解决多个异常,有以下方法:

"""
# except后面不带任何异常类型,这种方式可能没办法让我们知道具体的异常信息
try:
    [执行语句]
    …………
except:
    [执行语句]
    …………
else:
    [执行语句]
    …………
"""
"""
# except后面使用元组带多个异常
try:
    [执行语句]
    …………
except ([异常类型1],[异常类型2],……):
    [执行语句]
    …………
else:
    [执行语句]
    …………
"""

以下异常类型来自:https://docs.python.org/3/library/exceptions.html#exception-hierarchy

BaseException
 +-- SystemExit
 +-- KeyboardInterrupt
 +-- GeneratorExit
 +-- Exception
      +-- StopIteration
      +-- StopAsyncIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
      |    +-- ModuleNotFoundError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      |    +-- RecursionError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |         +-- UnicodeDecodeError
      |         +-- UnicodeEncodeError
      |         +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
           +-- BytesWarning
           +-- ResourceWarning

 

拓展部分

 try……finally……语句 

该语句中的 finally 一定会被执行,通常用于一些即便出现异常,依然需要去进行一些操作的场景,如文件的关闭等类似动作,即便文件关闭之前出现异常,我们依然可以通过 finally 将文件关闭。

 

语法结构:

"""
try:
    [执行语句]
    …………
except [异常类型] as [异常参数]:
    [执行语句]
    …………
else:
    [执行语句]
    …………
finally:
    [执行语句]
    …………
"""

 断言assert语句  

该语句常用于测试场景,如在程序运行过程中,我们可以通过该语句设置某一个条件为真程序才会继续运行,否则中断程序,调用默认的异常处理器,并输出我们设置的提示信息。

 

语法结构:

"""
assert [条件], "[提示信息]"
"""

转载请注明:XAMPP中文组官网 » Python基础教程:异常及处理