Python基础3——异常

半臻
• 阅读 2059

11 异常

11.1 异常种类

异常种类 没必要记,不懂的话直接去百度即可

  • AttributeError 试图访问一个对象没有的属性
  • IOError 输入、输出异常
  • ImportError 无法引入模块或者包
  • IndentationError 语法错误,代码缩进问题
  • IndexError 数组越界
  • KeyError 字典中不存在的键
  • KeyboardInterrupt 按Ctrl+C异常中止
  • NameError 使用一个还没赋予对象的变量
  • SyntaxError 语法错误
  • TypeError 传入对象类型和期望的不符合
  • ValueError 传入一个调用者不期望的值

10.2 异常捕获

基本语法

try:
    检测的代码块
except:
    如果检测到异常,就执行这个位置的代码

例子:

try:
    a
except:
    print("这个是错误的!!!")

例子2:

try:
    a
except NameError: #捕获特定的异常,只捕获NameError,其他的不捕获
    print("捕获到NameError")

例子3:

try:
    a
except NameError as e: #e是一个别名
    print(e) #打印异常信息

例子4:捕获所有异常

try:
    a
except Exception as e:
    print(e)

10.3 异常捕获-else用法

else在没有异常的时候才会执行

try:
    a = 1/0
except Exception as e:
    print(e)
else:
    print("没有异常,才会打印")

10.3 异常捕获-finally 用法

finally无论是否有异常都会执行代码

try:
    a = 1/0
except Exception as e:
    print(e)
else:
    print("没有异常,才会打印")
finally:
    print("无关有没有异常,这个都会执行")

10.4 抛出异常

raise 编写的时候,根据情况抛出异常

步骤:

  1. 创建一个Exception(‘异常提示信息‘)对象
  2. raise抛出这个对象(异常对象)
# 主动抛出一个异常
raise Exception('炒年糕没有放油')

def funa():
    raise Exception('这是异常信息')
    print("这条语句无法输出")
funa()

10.5 自定义异常类

注!请学习面向对象后再看

try:
    a = 1/0
except Exception as e:
    print("捕获到异常")
# 自定义异常类,需要继承Exception类
class HelloError(Exception):
    def __init__(self):
        print("这是自定义异常类")

try:
    n = input("请输入数字:")
    if n.isalpha():
        raise HelloError() #抛出异常
except HelloError as e:
    print(e)


class InputError(Exception):
    # 自定义异常类型的初始化
    def __init__(self,val):
        self.val = val
    # 返回异常类对象的描述信息
    def __str__(self):
        return f'{self.val} is invalid input'

try:
    raise InputError("输入的异常参数")
except InputError as e:
    print(e)
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
梦
3年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
Gwendolyn62 Gwendolyn62
3年前
python中的异常处理
异常异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下异常种类  在python中不同的异常可以用不同的类型(python
Bill78 Bill78
3年前
python 异常处理 try except
什么是异常异常就是程序运行时发生错误的信号,程序随即发生终止行为常见的异常有哪些AttributeError试图访问一个对象没有的树形,比如foo.x,但是foo没有属性xIOError输入/输出异常;基本上是无法打开文件ImportError无法引入模块或包;基本上是路径问题或名称错误IndentationEr
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
2年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
2年前
03.Android崩溃Crash库之ExceptionHandler分析
目录总结00.异常处理几个常用api01.UncaughtExceptionHandler02.Java线程处理异常分析03.Android中线程处理异常分析04.为何使用setDefaultUncaughtExceptionHandler前沿上一篇整体介绍了crash崩溃
Python进阶者 Python进阶者
5个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这