7

Python使用try-except语句捕获和处理异常 | CHEGVA

 2 years ago
source link: https://chegva.com/5469.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Python进阶(25)—使用try-except语句捕获和处理异常

◎知识点

  1. 使用try-except语句捕获和处理异常

◎脚本练习

"""
    程序在运行期间产生异常时,为了让程序能够继续运行,可以对抛出的异常实例对象进行捕获和处理,
这是通过try-except语句实现的:
    把可能会产生异常的代码放在try语句块中以捕获异常实例对象,
    把处理异常的代码放在由若干个except子句组成的except语句块中。
    
try-except语句的语法格式为:
    try:
        可能会产生异常的代码
    except 异常类对象1:
        当前except子句处理异常的代码
    except 异常类对象2:
        当前except子句处理异常的代码
    ...
    except 异常类对象n:
        当前except子句处理异常的代码
"""

try:
    result = 1 / 2
    # result = 1 / 0
    # result = int('abc')
    print(result)
except ImportError:
    print("导入错误")
except ZeroDivisionError:
    print("0不能作为除数")
except TypeError:
    print("类型错误")
print("结束")

"""
    如果抛出的异常实例对象所对应的类对象是except子句中异常类对象的子类,那么该except子句也会被匹配
"""

try:
    result = 1 / 0
    print(result)
except ArithmeticError:
    print("数学错误")

"""
    当try语句块中产生异常时,会从上到下依次查找是否有匹配的except子句,只要找到一个匹配的
except子句,则不会再查找剩余的except子句。因此,要注意各个except子句的顺序
"""

try:
    result = 1 / 0
    print(result)
except ZeroDivisionError:
    print("0不能作为除数")
except ArithmeticError:
    print("数学错误")
print("结束")

try:
    result = 1 / 0
    print(result)
except ArithmeticError:
    print("数学错误")
except ZeroDivisionError:
    print("0不能作为除数")
print("结束")

"""
    当多个异常类对象对应的异常处理代码完全相同时,可以把这些异常类对象以元组的形式放在一个except子句中
"""

try:
    result = 1 / 0
    print(result)
except TypeError:
    print("运行出错了")
except ZeroDivisionError:
    print("运行出错了")
except ValueError:
    print("运行出错了")

try:
    result = 1 / 0
    print(result)
except (TypeError, ZeroDivisionError, ValueError):
    print("运行出错了")

"""
    如果想在匹配到的except子句中访问异常实例对象,可以在except子句中的冒号添加关键字as和一个变量 
"""

try:
    result = 1 / 0
    print(result)
except ZeroDivisionError as err:
    print(type(err))    # <class 'ZeroDivisionError'>
    # 类对象ZeroDivisionError实现了特殊方法__str__()
    print(err)          # division by zero

try:
    result = int('abc')
    print(result)
except (TypeError, ZeroDivisionError, ValueError) as err:
    print(type(err))    # <class 'ValueError'>
    # 类对象ValueError实现了特殊方法__str__()
    print(err)          # invalid literal for int() with base 10: 'abc'

"""
    为了在except语句块中将所有的异常对象尽可能地覆盖到,可以将最后一个except子句中的
异常类对象指定为Exception(内置的异常类对象和自定义的异常类对象都继承自Exception),
或者在最后一个except子句中不指定异常类对象
"""

try:
    result = 1 / 0
    print(result)
except (TypeError, ValueError):
    print("类型错误或值错误")
# except:
except Exception:
    print("其它错误")
Python

Python进阶(25)—使用try-except语句捕获和处理异常

◎脚本地址:https://github.com/anzhihe/learning/blob/master/python/practise/learn-python/python_advanced/try_except.py

安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5469.html | ☆★★每天进步一点点,加油!★★☆ | 

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK