对异常类的理解

1. 异常分类
异常分为:语法错误和异常

语法错误
语法错误通常自己书写不规范等造成的规范上的错误

异常
异常通常由逻辑上的错误而造成的
比方说:除数为0等等
异常处理

while True:
try:
内容
except ValueError:
print(‘your value is error’)


	while True:
    try:
        a=int(input('aaa:'))
        break
    except ValueError:
        print('your value is error')
aaa:adfa
your value is error
aaa:13

首先执行try语句
如果报的异常的类型是except之后的异常类型就运行except
最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出
可以有多个except或者多个异常类型,用,隔开
抛出异常
Python使用raise语句抛出一个异常

import sys
 
try:
    f = open('myfile.txt')
    s = f.readline()
    i = int(s.strip())
except OSError as err:
    print("OS error: {0}".format(err))
except ValueError:
    print("Could not convert data to an integer.")
except:
    print("Unexpected error:", sys.exc_info()[0])
    raise

try except 语句还有一个可选的else子句,如果使用这个子句,那么必须放在所有的except子句之后。这个子句将在try子句没有发生任何异常的时候执行。

使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到的、而except又没有捕获的异常。

异常处理并不仅仅处理那些直接发生在try子句中的异常,而且还能处理子句中调用的函数(甚至间接调用的函数)里抛出的异常。
raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。
用户自定义异常
所有的异常类都继承Exception,可以直接继承或间接继承

class MyError(Exception):
	def		 __init__(self,value):
					self.value=value
	def 		__str__(self):
				print(self.value)

在这个例子中Exception异常中的构造方法被重写
当创建一个模块可能抛出多种不同的异常的时候,一种方法是为这个包建立一个基础异常类,然后基于这个基础类为不同的错误情况创建不同的子类
定义清理行为
try:
except:
后面还可以选一个可选的字句finally,他定义了无论任何情况都会执行的清理行为
不管try是否发生异常,finally都会执行
清理行为概念
就像在对文件进行操作的时候,最后都需要对文件进行关闭,这个关闭就是文件的清理行为

抛出异常和捕获异常的概念
抛出异常:方法本身不对这个异常进行处理,而只有在调用这个方法的时候进行处理
捕获异常:在方法本身自己将异常进行处理

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值