Exception 几乎所有异常类都是他派生出来的 AttributeError 引用属性或给他赋值失败时引发 OSError 操作系统不能执行指定的任务(如打开文件时引发),有多个子类 IndexError 使用序列中不存在的索引时引发,为LookupError的子类 KeyError 使用映射中不存在的键时引发,为LookupError的子类 NameError 找不到变量名称时引发 SyntaxError 代码不正确时引发 TypeError 将内置操作或函数用于类型不正确时的对象引发 ValueError 将内置操作或函数用于这样的对象时引发:其类型正确但包含的值不合适 ZeroDivisionError 在除法或求模运算的第二个参数为0时引发
#语法错误 #异常,在程序运行时报出的异常 # def div(a,b): # print(a/b) #div(1/0) #ZeroDivisionError: division by zero #异常处理: ''' try: 可能出现的异常的代码 except: 如果有异常执行的代码 finally: 无论有没有异常都会执行的代码 情况1: try: 有可能产生多种异常 except 异常的类型1: 输出 except 异常的类型2: 输出 except exception as err: #最大的异常放在最下 print('出错了!',err) #err可以获得错误原因 try: 可能出现的异常的代码 except: 如果有异常执行的代码 else: pass #如果有else try中就不能出现return 情况4: #文件操作 stream.close() #数据库操作 close() 放入finally执行 try: 可能出现的异常的代码 except: 如果有异常执行的代码 finally: 无论有没有异常都会执行的代码 ''' def func(): try: n1=int(input('输入第一个数字:')) n2=int(input('输入第二个数字:')) per=input('请输入(+ - * /)') if per=='+': result=n1+n2 elif per=='-': result=n1-n2 elif per=='*': result=n1*n2 elif per=='/': result=n1/n2 else: print('符号输入有误') print('结果是:',result) except ZeroDivisionError: print('除数不能为0') except ValueError: print('必须输入数字') func() def func1(): stream=None try: stream=open(r'E:\Pycharm\python100题\代码\book\users.txt') container=stream.read() print(container) except Exception as err: print('错误类型为',err) finally: print('-------finally-------') if stream: stream.close() def func1(): stream=None try: stream=open(r'E:\Pycharm\python100题\代码\book\users.txt') container=stream.read() print(container) except Exception as err: print('错误类型为',err) finally: print('-------finally-------') if stream: stream.close() func1() #抛出异常 raise 异常类型('异常原因') def func1(): username=input('请输入用户名:') if len(username)<6: raise Exception('用户长度必须六位以上') else: print('用户输入的用户名:',username) try: func1() except Exception as err: print(err) print('注册失败') else: print('注册成功' )