我是靠谱客的博主 害怕小兔子,最近开发中收集的这篇文章主要介绍Python基础(十)异常处理Python基础(十)1、错误与异常处理2、小结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Python基础(十)

  • Python基础(十)
  • 1、错误与异常处理
    • 1.1、异常的概念
    • 1.2、语法结构
    • 1.3、try....except
      • 1. 捕获指定的异常
      • 2. 捕获多个异常
      • 3. 捕获所有异常
    • 1.4、else
    • 1.5、finally
    • 1.6、raise
    • 1.7、自定义异常
      • 1. 定义自定义异常
      • 2. 抛出捕获自定义异常
    • 1.8、异常讲解
      • 1. 异常的捕获
      • 2. 捕获多个或通用异常
      • 3. 异常的抛出机制
    • 1.9、常见的异常
  • 2、小结

Python基础(十)

1、错误与异常处理

1.1、异常的概念

有时候代码存在缺陷,在执行程序的时候,执行到错误代码的时候,程序直接停止或抛出报错, 这是因为Python检测到一个错误时, 解释器就无法继续执行了, 出现了错误的提示,这样的现象就是"异常"。

1.2、语法结构

最基础的捕获可以直包含try与except对异常进行处理,else与finally可以按实际情况添加

try:
    < 代码块 >
except < 异常名1 >:
    print('异常说明1')
except < 异常名2 >:
    print('异常说明2')
else:
    < 代码块 >  # try语句中没有异常则执行此段代码
finally:
    print("finally")  # 无论是否发生异常都将会执行最后的代码

1.3、try…except

1. 捕获指定的异常

try:
    print(a)
except NameError as msg:
    print(msg)

print("666")

2. 捕获多个异常

try:
 fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码
 print("hello world")
 fp.close()
except GeneratorExit:
 print("异常说明:GeneratorExit")
except FloatingPointError:
 print("异常说明:FloatingPointError")

3. 捕获所有异常

try:
 x = 3 / 0 # 程序出现异常,不会继续执行后面的代码
 print("hello world")
except:
 print("异常说明:分母不能为0")

1.4、else

如果判断在代码执行过程中没有异常的情况下执行其他的代码块,就可以使用else语句。

try:
    print("aa")
except NameError as msg:
    print(msg)
except Exception as msg:
    print(msg)
else:
    print("无错")
print("666")

1.5、finally

无论什么情况都将会执行finally里的代码块

try:
    print(aa)
except NameError as msg:
    print(msg)
except Exception as msg:
    print(msg)
else:
    print("无错")
finally:
    print("finally")
print("666")

1.6、raise

主动触发异常

try:
    raise Exception("raise Exception!")  # 触发异常后,后面的代码就不会再执行
    print("hello world")
except Exception as e:
    print(e)
finally:
    print("OK")

1.7、自定义异常

在开发的过程中可能会出现现有的异常类型不满足个人的开发需求,这是就可以自定义异常。

自定义异常,都要直接或间接继承Error或Exception类。

由开发者主动抛出自定义异常,在python中使用raise关键字。

1. 定义自定义异常

  1. 定义一个类,直接或间接继承Error或Exception类
  2. 根据需求编写init方法
  3. 编写str方法,显示出错信息。以便于后期调整。

示例:

class MyException(Exception):
    def __init__(self, leng):
        self.leng = leng

    def __str__(self):
        print("长度是" + str(self.leng) + ",超过长度了")

2. 抛出捕获自定义异常

class MyException(Exception):
    def __init__(self, leng):
        self.leng = leng
        pass

    def __str__(self):
        return ("长度是" + str(self.leng) + ",超过长度了")
        pass

    pass


def name_Test():
    name = input("your name:")
    try:
        if len(name) > 4:
            raise MyException(len(name))  # 抛出异常很简单,使用raise即可,但是没有处理,即捕捉
        else:
            print(name)
    except MyException as msg:
        print(msg)
    finally:
        print("okk")


# 调用函数,执行
name_Test()
print("结束")

1.8、异常讲解

1. 异常的捕获

  • 将可能出错的代码放到try里面,except可以指定类型捕获异常。
  • except里面的代码是捕获到异常时执行,将错误捕获,这样异常就不会导致解释器处理异常而导致整个程序崩溃。

2. 捕获多个或通用异常

  • 一个try块可以捕获多个异常,每一个except可以代表一种异常。
  • except如果指定了异常名就只会捕捉指定的异常,如果没有指定就会捕捉全部的异常。
  • 不指定捕获异常名或指定为 Exception都可以捕获到全部的异常。

3. 异常的抛出机制

  • 在运行时发生异常解释器会查找相应的异常捕获类型,如果在当前函数里面没有找到的话,它会将异常传递给上层的调用函数,看能否处理如果在最外层没有找到的话,解释器就会异常退出
  • 所以说当有多层嵌套函数时,可以在最顶层捕获其余层的错误类型

1.9、常见的异常

BaseException — 所有异常的基类

SystemExit — 解释器请求退出

KeyboardInterrupt — 用户中断执行(通常是输入^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 — 用户代码生成的警告

2、小结

  • 错误与异常处理

最后

以上就是害怕小兔子为你收集整理的Python基础(十)异常处理Python基础(十)1、错误与异常处理2、小结的全部内容,希望文章能够帮你解决Python基础(十)异常处理Python基础(十)1、错误与异常处理2、小结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部