码迷,mamicode.com
首页 > 编程语言 > 详细

兄弟连学Python 错误和异常处理

时间:2017-12-12 21:38:35      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:abi   魔术   fun   orm   语法   类型   学python   filename   pen   

#常见的异常

class Human:
    #属性
    sex = man
    age = 18

    #方法
    def run(self):
        print(跑啊~~~)

#实例化对象
#zw = Human()
#print(zw.age)

#AttributeError 尝试访问未知的对象属性
#print(zw.color)

#lists = [‘qtt‘,‘mll‘,‘cyy‘,‘lss‘]
#IndexError 索引错误
#print(lists[200])

#dicts = {‘ym‘:‘yongmei‘,‘bd‘:‘baidong‘,‘qw‘:‘qiaowei‘}
#KeyError  键错误
#print(dicts[‘gg‘])

#KeyboardInterrupt 用户键盘终止程序运行
#while True:
    #pass

#NameError  变量名错误
#print(conghao)

#IndentationError  缩进错误
#def myfunc():
 #print(‘111‘)
  #print(‘222‘)

#ZeroDivisionError  除数不能为0
#12/0

#断言语句
#assert 3 < 1


#try...except语法  用于解决程序异常问题

try:
    #此区域内尝试执行某些代码
    girls = [jiaojiao,lele,feifei]
    #访问不存在的索引
    #print(girls[10])

    #访问不存在的变量
    #print(pa)

#设置当前区域只接受变量名称错误,并且解决
except NameError:#程序出现异常执行的区域
    print(程序[变量名]出现了异常情况!)

#设定当前区域只接受索引错误,并且解决
except IndexError:
    print(程序[索引]出现了异常情况!)

#接受所有异常的区域,并且解决
except:
    print(程序出现了错误!)

#程序没有出现任何异常执行的区域
else:
    print(太好了一个错误都没有)

#无论程序有没有异常都会执行取余
finally:
    print(工作结束,收工走人)

print(++++++++++++)


#异常处理的小例子

try:
    #书写一个列表
    shits = [ershi,yanshi,bishi,shi]

    #访问不存在的索引
    print(shits[100])

except IndexError as e:#as语法此处的作用是设置一个变量来接受错误的异常信息对象
    #查看错误异常信息
    print(e,type(e))
    #提供异常的解决方案
    print(shits[-1])

try:
    print(pa)
except NameError:
    print(None)


#自定义错误类型和处理

#导入系统模块
import sys

#定义获取信息的函数()文件名,所在函数名,当前行数
def get_head_info():
    try:
        raise Exception
    except:
        f = sys.exc_info()[2].tb_frame.f_back
    return ( f.f_code.co_filename, f.f_code.co_name, str(f.f_lineno))

#不能为负数的异常类型
class FuShuError(RuntimeError):#自定义异常类需要继承运行时异常类 可以直接或者间接继承Exception类即可
    #添加初始化魔术非法
    def __init__(self,errormsg = ‘‘,errorno = ‘‘,errorline = ‘‘,errorfile = ‘‘):
        #将错误信息存入对象
        self.msg = errormsg#错误信息
        self.no = errorno#错误编号
        self.line = errorline#错误行数
        self.file = errorfile#错误文件

try:
    #设置年龄
    age = -18
    #检测年龄是否合法
    if age < 0:#年龄为负数  异常
        #抛出异常
        raise FuShuError(值为负数,250,get_head_info()[2],__file__)

#接受非负数的异常
except FuShuError as e:
    print(e,type(e))
    print(年龄为负数属于非法数值)
    age = age * -1

except NameError:
    print(变量书写异常)

except:
    print(程序出现异常)

print(age)


#with语法

‘‘‘(推荐使用with语法进行文件操作!)
#文件读取操作
#1.打开文件
fp = open(‘09.txt‘,‘r‘)
#2.读取文件
result = fp.read()
print(result)
#3.关闭文件
fp.close()
‘‘‘

"""
#将程序放入try except语法中
try:
    # 1.打开文件
    fp = open(‘09.txt‘, ‘r‘)
    # 2.读取文件
    result = fp.read()
    print(result)
    
    #故意报错
    print(babi)
    ‘‘‘
    #不行
    # 3.关闭文件
    fp.close()
    ‘‘‘
    
#文件运行出错可以被OSError接受
except OSError:
    print(‘程序运行出现问题‘)
    
except NameError:
    print(‘变量名错误‘)
‘‘‘    
else:#不行
    #3.关闭文件
    fp.close()
‘‘‘
‘‘‘
finally:#不行
    #3.关闭文件
    fp.close()
‘‘‘
"""

#with语法
try:
    #1.打开文件  #3.with会监控文件的使用自动关闭
    with open(09.txt,r) as fp: #相当于  fp = open(‘09.txt‘,‘r‘)
        #2.读取文件
        result = fp.read()
        print(result)

        print(bibi)

except OSError:
    print(操作文件出错)

except NameError:
    print(变量不存在)

 

兄弟连学Python 错误和异常处理

标签:abi   魔术   fun   orm   语法   类型   学python   filename   pen   

原文地址:http://www.cnblogs.com/sunyang945/p/8022784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!