zoukankan      html  css  js  c++  java
  • Python 异常处理

    异常的语法:

    try:              # try下面的语句块执行出现异常,才会执行except下面的语句块
        ....
    except:
        ....
    try:              # <name>表示异常名,我们可以指定出现什么异常就执行什么样的语句块,可以有多个except进行匹配
        ....
    except <name>:
        ....
    try:              # e 表示异常的详细信息,我们可以通过 print(e) 来查看异常的信息
        ....
    except <name>, e:
        print(e)
    try:              # 无论 try 下面的语句块执行是否正常,都会执行 finally 下面的语句块
        ....
    except:
        ....
    finally:
        ....
    try:              # 只有 try 下面的语句块执行正常,才会执行 else 下面的语句块
        ....
    except:
        ....
    else:        
        ....
    finally:
        ....


    例子:

    import sys
    import time 
    
    try:
        time.sleep(60)
    except KeyboardInterrupt:
        print("User Press Ctrl+C, Exit")
        sys.exit()


    常见的异常:

    SyntaxError 语法错误
    IndexError 索引超出序列范围
    KeyError 请求一个不存在的字典关键字
    NameError 尝试访问一个没有声明的变量
    IndentationError 缩进错误,即代码没有正确对齐
    ImportError 无法引入模块或包,可能路径不存在
    IOError 输入输出错误,比如你要读的文件不存在
    UnboundLocalError 试图访问一个还未被设置的局部变量,例子
    ValueError 传给函数的参数类型不正确,比如给int()函数传入字符串
    AttributeError 尝试访问未知的对象属性,比如 os.path.abcd() 中是没有 abcd() 这个函数的
    KeyboardInterrupt 键盘中断,即我们按 Ctrl + C 就会出现这个异常

        

    如何自定义异常:

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    class ShortError(Exception):    # 必须用类来自定义异常,且要继承Exception这个异常
        def __str__(self):
            return "your password is too short, please input again."
    
    try:
        password = raw_input("Please input your password: ")
        if len(password) <= 3:
            raise ShortError()    # 如果密码长度小于3,就抛出 ShortError 这个异常,下面的 except 捕获这个异常,最终决定要做什么
    except ShortError, e:         
        print(e)

        

  • 相关阅读:
    手写堆排序和归并排序
    海量数据处理
    HDU 1532 --&&-- POJ1273 dinic 算法
    POJ 3159 最短路 SPFA
    POJ 1459 网络流 EK算法
    8.14比赛j题 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87813#overview
    单链表---邻接表
    poj 1273 ---&&--- hdu 1532 最大流模板
    HDU 2603 二分匹配
    UVA 796 连通图求桥
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10300940.html
Copyright © 2011-2022 走看看