Python 基础之 异常处理

python 基础之异常处理

说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号。

异常的种类先来看一下:

一、常见的异常

AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

二、不常见的异常

ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError

更多异常

更多的异常

接下来再谈何为异常处理?

python解释器检测到错误,触发异常(也允许程序员自己触发异常)

程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)

如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理

还有个现实的问题就是,为何要进行异常处理呢? 这个问题问的很有价值,进行异常处理就是为了让程序更加的健壮,防止程序在运行过程中奔溃!!!

那如何进行异常处理呢?if 是否可以进行异常处理呢?是不是异常处理的方式只有 try .......except ...finally 这一种方式呢?

好了,现在就统一说明一下,if 是可以进行异常的处理的,但是if 在进行异常处理的过长中会有许多的问题:

1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的相同类型的错误你需要写重复的if来进行处理。

2.在你的程序中频繁的写与程序本身无关,与异常处理有关的if,就像是在你的代码中到处拉屎。可读性极其的差

3.这是可以解决异常的,只是存在1,2的问题,所以,千万不要妄下定论if不能用来异常处理。

我们再来看一下用 try .....except ...finally 的方式处理异常的基本方法

1. 基本语法:

1 try:
2     被检测的代码块
3 except 异常类型:
4     try中一旦检测到异常,就执行这个位置的逻辑

2.异常处理完整版:

try:
    a = input(‘>>>\n‘)
    int(a)
    b = input(‘>>>\n‘)
    int(b)
except ValueError as e :
    print(e)

else:
    print(‘你就是个大傻逼!!!!!‘)
finally:
    print(‘无论如何我都要执行!!!‘)

except 的代码块可以写多个,就是呢向if else中的else一样的多分支结构

3.主动触发异常:

try:
    raise TypeError(‘类型错误‘)
except Exception as e:
    print(e)

4. 自定义异常:

class EgonException(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg

try:
    raise EgonException(‘类型错误‘)
except EgonException as e:
    print(e)

简单的总结一下:

什么是异常,异常就是错误引发的结果

什么是处理,由于异常带来的是程序崩溃,处理的目的就是让程序在异常后跳转到其他逻辑去执行,不让程序崩溃。

if本身就可以来处理异常,只不过if的方式,对于不同代码段的同一种异常,需要重复写多分支的if,而这段多分支if与真正的工作无关,写多了你的程序可读性就会及其的差。

try..except的方式,只是python提供给你一种特定的语法结构去做这件事,对于不同代码的同一种异常,python为你定制了一中类型,一个expect就可以捕捉到。

时间: 2024-10-11 04:26:41

Python 基础之 异常处理的相关文章

python基础之异常处理

--引入 程序运行时,难免出现bug,当出现bug时,用户可能很难明白那一堆报错代码到底是个什么东西,为了让用户能更清楚知道错误原因或者直接对用户将此错误屏蔽,异常处理就应运而生. --格式 try: #输入要运行的代码 pass except NameError as err: #将该类型的错误捕获 pass except Exception as err: #将所有类型的错误捕获 pass else: #如果没有错误,则运行该段代码 pass finally: #不管是否存在错误,都运行该段

python基础(21):异常处理

1. 异常和错误 1.1 错误 程序中难免出现错误,而错误分成两种 1.1.1 语法错误 语法错误:这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正. #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha 1.1.2 逻辑错误 #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'s

Python基础、异常处理

一.概述 错误与异常的概念,区别 内置异常 为什么使用异常.场景.作用 异常处理 try/except/else try/fianlly raise assert 自定义异常类

python基础七--异常处理

异常处理try,except,else,finally的使用和实例. 1.异常处理说明 try: 5/0 except Exception as e: #这个exception 能捕捉到所有的异常 print('异常信息:',e) #这个是出了异常的话,怎么处理,e代表异常信息 else: print('没有出异常的话,走这里') #若是没有出现异常,运行else finally: print('这里是finally') #无论是否出现异常,都会执行finally 2.判断小数(判断s是否可以转

Python基础语法 - 异常处理

基本语法 在编程过程中为了增加友好性,在程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面,通俗来说就是不让用户看见大黄页! try: pass except Exception as e: pass 需求:将用户输入的两个数字相加 while True: num1 = raw_input('num1:') num2 = raw_input('num2:') try: num1 = int(num1) num2 = int(num2) result = num1 + num2

Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1)   静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法.普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访

Python基础---python中的异常处理

Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) 如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理. 二.为什么要进行异常处理 python解析器去执行程序,检测到了一个错误时,触发异常,异常触发后且没被处理的情况下,程序就在当前异常处终止,后面的代码不会运行,谁会去用一个运行着突然就崩溃的软件. 所以你必须

Python基础(七):异常处理

异常处理是确保程序在控制范围内运行的一个保障机制,在程序发生异常时执行应对措施,确保程序不会直接挂掉,并且让异常信息有迹可循,所以合理的异常处理机制也是保障程序健壮性的关键因素之一. 在Python中,异常处理的流程结构大致如下, try: 代码块1 except Exception as e: 代码块2 raise e else: 代码块3 finally: 代码块4 下面详细说明各个关键字的用法, 1.try 如果程序中有一些操作可能会出现异常,那么就把这些代码放在try语句后面,比如一些用

Python 基础 - Day 4 Learning Note - Generator 生成器

列表生成器/列表解析 list comprehension 简单灵活地创建列表,通常和lambda(), map(), filter() 一起使用 通过列表生成式, 直接创建列表.但是,收到内容限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问几个元素,那其他的就白占空间.列表生成器能够一边循环一边计算,大大节省大量的空间.是生成器的一种. 只有调用,才能生成. 不支持切片操作,只能通过__next()___一个个取数字. 基本语法