#coding:utf-8
#什么是错误和异常
#常见异常的种类
#异常怎么处理
#自定义异常
#Python 使用try......except
#try:
# file=open('python.py','r') #如果没有异常
# print('没有发生异常')
#except Exception as e:
# print(e)
#finally:
# print('有没有异常都执行')
#常见的异常类型
#NameError (使用了没有定义的变量)
#ZeroDivisionError #print(9/0) 报错ZeroDivisionError
#SyntaxError
#for num in [1,2,3] #少冒号 SyntaxError: invalid syntax
# print(num)
#IndexError索引越界
#a_list=[12,25]
#print(a_list[7]) #IndexError: list index out of range
#KeyError字典Key:value z
#person_dict={'name':'ben','age':22}
#print(person_dict['per']) #KeyError: 'per'
#IOError 文件错误
#f=open('ben.py') #IOError: [Errno 2] No such file or directory: 'ben.py'
#AttributeError 位置属性错误
#class MyClass():
# pass
#c=MyClass()
#print(c.name)
#分类异常捕获
#try:
# f=open('ben.py') #不能直接操作文件(调用操作系统的操作方法接口)
# x=24/0
# y=int('angela')
#except ValueError as e:
# print(1)
#except IOError as e:
# print(2)
#except ZeroDivisionError as e:
# print(3)
#except Exception as e:
# print(e )
#else:
# print('代码正常')
#finally:
# print('清除完毕')
#try:
# result=int('bane')
# bun=99/0
# f=open('ben.py')
#except (ValueError,IOError,ZeroDivisionError<Exception) as e:
# print(e)
#else:
# print('代码正常')
#finally:
# print('清楚成功')
#异常捕获和不捕获区别
#异常没有被捕获,#Traceback(堆栈信息,打印到控制台,程序强制终止),异常后面的信息不被执行
#如果捕获,即使有异常,也不影响后面的代码执行
#由程序员主动抛出异常 raise(Python关键字)
#解释器-->抛出异常
#由程序员主动抛出异常(真的出现异常,可以跑出,出现特定的场景,也可以抛出强制的提醒)
#age=22
#if age>20:
# raise ValueError('不正确') #程序员抛出异常,不是解释器
#发生异常,我么可以不捕获,直接抛出去
#自定义异常
#import sys
#class MyError(Exception):
# def __init__(self,message): #__XXX__ 具有特殊含义
# self.mess=message
# def __str__(self):
# return self.mess
#def run():
# try:
# if len(sys.argv)==1:
# raise MyError('参数个数不正确')
# except Exception as e:
# print(e)