python学习之异常处理

一、语法导致的异常,应该在程序运行前处理
例子:
print(

输出:
File "E:/python/oldboyday9/learn1.py", line 4
    if
     ^
SyntaxError: invalid syntax

注:输出分三个部分,第一部分错我位置,第二部分SyntaxError错误类型,第三部分错误值invalid syntax

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

四、异常处理
python解释器捕获异常触发异常处理,自己也可以触发异常,编写异常处理
try:
    代码块    #有异常触发,执行except块
except:
    执行处理异常
    
例子:
try:
    f = open(‘a.txt‘)
    g = (line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:    #捕获stopiteration异常,执行关闭文件
    f.close()

异常类只能捕获指定的异常,如果不是指定的异常,则报错
例子:
s1 = ‘hello‘4 
try:
   int(s1)
except IndexError as e:
   print(e)
int(s1)不是指定的异常IndexError,所以报错

多分支异常
例子:
s1 = ‘hello‘
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except StopIteration as e:
    print(e)
    
万能异常Exception
例子:
s1 = ‘hello‘
try:
    int(s1)
except Exception as e:
    print(e)
    
else子块,没有异常触发else
例子:
s1 = ‘hello‘
try:
    int(s1)
except Exception as e:
    print(e)
else:
    print(‘没有异常‘)    
    
finally子块,有没有异常都触发finally
例子:
s1 = ‘hello‘
try:
    int(s1)
except Exception as e:
    print(e)
finally:
    print(‘都会触发finally‘)
    
raise关键字主动触发异常
例子:
try:
    raise TypeError(‘类型异常‘)
except Exception as e:
    print(e)
    
自定义错误类型
例子
class MyError(BaseException):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

try:
    raise MyError(‘自定义错误类型‘)
except MyError as e:
    print(e)
时间: 2024-11-05 19:38:59

python学习之异常处理的相关文章

python学习-基础-异常处理

异常: 异常(exception):因运行时错误而出现,会产生一个traceback "traceback"是出现的运行时错误的一个详细描述 常见异常:(待完善) 数据不符合期望的格式时会出现ValueError 数据无法正常访问时会出现IOErroe(例如,可能你的数据文件被移走或者重命名) NameError ,调用的变量名称不存在 处理异常: try/except语句提供了一个异常处理机制,从而保护可能导致运行时错误的某些代码 pass语句就是python的空语句或null语句,

python学习笔记异常处理(七)

异常处理 异常处理是工作中编写代码必须要完成的内容,对于不符合预期的操作,程序总会出现异常情况,而对异常情况能够妥善处理,是保证程序稳定性的关键. >> f = input("filename")filename/hone/a.py>> ff = open(f)Traceback (most recent call last):File "<stdin>", line 1, in <module>FileNotFoun

Python学习笔记(异常处理)

用户输入了一个不合规定的值,或者需要打开的文件不存在.这些情况被称作"异常",一个好的程序需要能处理可能发生的异常,避免程序因此而中断. 例如我们去打开一个文件: f = file('non-exist.txt') print 'File opened!' f.close() 假如这个文件因为某种原因并没有出现在应该出现的文件夹里,程序就会报错: IOError: [Errno 2] No such file or directory: 'non-exist.txt' 程序在出错处中断

Python学习之--异常处理

Python中的Exceptions是所有异常的基类,内置的异常类都放在了exceptions模块中,通过dir()函数可以看到这些内置的类 import exceptions ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'EnvironmentError', 'Ex

python学习-72 异常处理

异常处理 # 异常处理 ''' try: 主逻辑 except Exception as e: 捕捉异常 异常输出 ''' # —————————————————————————————————————————————————— # 常用的异常有ValueError , keyError , IndexError,TypeError等等 ''' try: age = input('>>1:') int(age) lis = [] lis[1] except ValueError as e: p

python学习之----异常处理小示例

网络是十分复杂的.网页数据格式不友好,网站服务器宕机,目标数据的标签找不到,都 是很麻烦的事情.网络数据采集最痛苦的遭遇之一,就是爬虫运行的时候你洗洗睡了,梦 想着明天一早数据就都会采集好放在数据库里,结果第二天醒来,你看到的却是一个因某 种数据格式异常导致运行错误的爬虫,在前一天当你不再盯着屏幕去睡觉之后,没过一会 儿爬虫就不再运行了.那个时候,你可能想骂发明互联网(以及那些奇葩的网络数据格 式)的人,但是你真正应该斥责的人是你自己,为什么一开始不估计可能会出现的异常! html = urlo

Python学习【异常处理】

异常 异常是指在程序中,导致程序无法继续正常运行的事件. 异常是一个对象,一般在程序不能正常执行时被抛出. 一般来说,异常会导致程序中止. 为防止异常导致的程序中止,一般采取异常捕获. 异常捕获 try-except语句(else和finally语句可选) 当程序正常运行try中的代码,当try中产生异常时会去except语句后列出的exception寻找 如果该异常存在于列出的异常中或属于该异常的派生,就会执行对应的except中的代码 单独使用except会捕获所有种类的异常 try: 正常

python 学习笔记 6 -- 异常处理

当你的程序中出现某些 异常的 状况的时候,异常就发生了.例如,当你想要读某个文件的时候,而那个文件不存在.或者在程序运行的时候,你不小心把它删除了. 那么如果你是在IDE中运行,一个错误发生,异常会被打引出来,这便是未处理异常:当异常发生时,如果没有代码去关注和处理它,这些异常会传给置在Python中的缺省处理,他会输出一些调试信息并且终止运行.如果是在IDE中,这不是什么大事,但是如果是Python程序运行中的异常,它会导致整个程序终止,对于这些情况可以使用异常来处理. 1.try..exce

python学习笔记十——异常处理

1.try: command except 错误类型,记录错误信息变量: command finally: command try...finally的用处是无论是否发生异常都要确保资源释放代码的执行.一般来说,如果没有发生错误,执行过try语句块之后执行finally语句块,完成整个流程.如果try语句块发生了异常,抛出了这个异常,此时就马上进入finally语句块进行资源释放处理.如下从几个细节讨论finally的特性. 1).try中的return: 当在try语句块中含有return语句