zoukankan      html  css  js  c++  java
  • 异常处理

    #  异常处理
    # 逻辑错误 - 有可能在程序中出现,需要在代码级别进行规避
    # a #NameError
    # 1/num #ZeroDivisionError
    # dic = {1:2} #KeyError
    # dic[3]

    # 语法错误 - 必须在编程的过程当中就避免
    # if 1==2 #SyntaxError
    # print(3)

    # 迭代器
    # l = [1,2,3]
    # iter_l = iter(l)
    # while True:
    # try:
    # print(next(iter_l))
    # except StopIteration:
    # break

    # pickle
    # load

    # 程序中的异常 会导致什么: 程序就不再继续运行了
    # 良好的容错能力,能够有效地提高用户体验,维持业务的稳定性
    # num = 1
    # 异常处理的语法 : 单分支与多分支
    # try:
    # # a #NameError
    # 1/num #ZeroDivisionError
    # dic = {1:2}
    # dic[3] #KeyError
    # print('-'*50)
    # except NameError:
    # print('触发 name Error 啦!')
    # except ZeroDivisionError:
    # print('ZeroDivisionError')
    # except KeyError:
    # print('KeyError')
    #
    # print('*'*50)
    # class A:pass #AttributeError
    # a = A()
    # a.name
    # int(input("num >>>")) # ValueError
    # 3+'a' #TypeError
    # 例子
    # def create_teacher():print('创建老师')
    # def create_class():print('创建班级')
    # def create_student():print('创建学员')
    # l = [('创建老师',create_teacher),
    # ('创建班级',create_class),
    # ('创建学员',create_student)]
    # while True:
    # for key,item in enumerate(l,1):
    # print(key,item[0])
    # try:
    # num = int(input('num : '))
    # l[int(num) - 1][1]()
    # except ValueError:
    # print('请输入一个数字')
    # except IndexError:
    # print('您输入的数字有误')

    # if num.isdigit() and int(num) >=1 and int(num)<= 3:
    # l[int(num)-1][1]()
    #
    # def create_teacher():
    # print('创建老师')
    # def create_class():print('创建班级')
    # def create_student():print('创建学员')
    # l = [('创建老师',create_teacher),
    # ('创建班级',create_class),
    # ('创建学员',create_student)]
    # while True:
    # for key,item in enumerate(l,1):
    # print(key,item[0])
    # try:
    # num = int(input('num : '))
    # l[int(num) - 1][1]()
    # except Exception: # 万能异常
    # print('您的输入有误,请输入一个有效的数字')

    # def login():
    # name
    #
    # def main():
    # login()
    #
    # try:
    # main()
    # except Exception as e:
    # print(e)
    # logging.debug('')

    # 先完成功能 在测试的时候 一边修改代码 一边加上异常处理
    # 只要加上异常处理,一定要写日志,不要在大段的代码外直接套上异常处理
    # 应该是在具体的逻辑上(具体的细节处的代码段)加上细粒度异常处理
    # 对于可以预料到的异常 一定要尽力的疏导 如果不能解决 必须要写上提示以及引发错误的原因

    # 万能异常 as语句
    # 万能异常 配合多分支 : 万能异常必须写在所有分支异常之后
    # 优先处理一些能预料到的错误类型,一些预料不到的错误类型应该被最终的万能异常捕获
    # def create_teacher():
    # dic = {'egon':['male',40],'alex':['female',83]}
    # print('创建老师')
    # dic['peiqi']
    # def create_class():print('创建班级')
    # def create_student():print('创建学员')
    # l = [('创建老师',create_teacher),
    # ('创建班级',create_class),
    # ('创建学员',create_student)]
    # while True:
    # for key,item in enumerate(l,1):
    # print(key,item[0])
    # try:
    # num = int(input('num : '))
    # l[int(num) - 1][1]()
    # except IndexError:
    # print('您输入的数字不合法')
    # except ValueError:
    # print('请您输入一个合法的数字')
    # except Exception as e: # 万能异常
    # print('您的代码逻辑有问题')
    # print(e)
    # except ValueError IndexError Exception

    # tey__ else
    # def create_teacher():print('创建老师')
    # def create_class():print('创建班级')
    # def create_student():print('创建学员')
    # l = [('创建老师',create_teacher),
    # ('创建班级',create_class),
    # ('创建学员',create_student),]
    # # ('创建学校',)]
    # try:
    # '''发短信'''
    # for i in l:
    # i[1]()
    # except IndexError as e:
    # print(e)
    # else:
    # # '当try语句中的代码没有异常,
    # # 被完整的执行完,就执行else中的代码'
    # print('*********')

    # try_finally 和 主动抛异常, 断言
    # try:
    # f = open('file1')
    # for line in f:
    # line
    # except Exception as e:
    # print(e)
    # finally:
    # '''不管try语句中的代码是否报错,都会执行finally分支中的代码'''
    # print('finally 被执行了')
    # f.close()

    # def func():
    # try:
    # return 1
    # finally:
    # print('1234')
    # ret = func()
    # print(ret)
    # 当 finally 遇到return的时候
    # finally仍然执行


    # def dealwith_file():
    # try:
    # f = open('file1',encoding='utf-8')
    # for line in f:
    # int(line)
    # return True
    # except Exception as e:
    # print(e)
    # return False
    # finally:
    # '''不管try语句中的代码是否报错,都会执行finally分支中的代码'''
    # '''去完成一些连接操作的收尾工作'''
    # print('finally 被执行了')
    # f.close()
    #
    # ret = dealwith_file()
    # print(ret)

    # try:
    # # 可能发生异常的代码
    # except 异常类型1 as 变量名:
    # print(变量名) # 变量名存储的是具体的错误信息
    # except 异常类型2 as 变量名:
    # print(变量名) # 变量名存储的是具体的错误信息
    # except Exception as 变量名:
    # print(变量名) # 变量名存储的是具体的错误信息
    # else:
    # print('如果以上代码没有发生异常以及异常处理工作就执行这里的代码')
    # print('一般情况下else中的代码用来下结论')
    # # logging模块
    # finally:
    # print('不管代码是否有异常都会执行,且在函数中遇到return仍然会执行')
    # print('一般情况下用于这个函数中资源的回收')


    # raise NameError
    # raise NameError('aaaa')
    # print('')

    # class MyError(BaseException):
    # def __init__(self,msg="Eva's error" ):
    # self.msg = msg
    # def __str__(self):
    # return self.msg
    # raise MyError
    # try:
    # raise MyError('我自己定制的异常')
    # except MyError as e:
    # print(e)

    # error_obj = MyError('是一个变量定义错误')
    # print(error_obj)
    # raise MyError()
    # raise error_obj

    # assert 1==2 # 条件判断
    # if 1==2:print('')
    # print(123)
    # 只负责处理一个文件 文件路径
    # file = 'file1'
    # import os
    # assert os.path.isfile(file) # 断言
    # print(1223333)
  • 相关阅读:
    ES6解构之复杂数据
    QQ音乐API-借他人之力实现我的音乐盒
    canvas 简易的加载进度条
    File System 之本地文件系统
    File System 定额(配额查询)
    window.btoa 和 window.atob
    Web App、Hybrid App与Native App
    函数节流和函数防抖
    javascript瀑布流
    protobuf的使用(netty传输多种对象类型)
  • 原文地址:https://www.cnblogs.com/xuerh/p/8576229.html
Copyright © 2011-2022 走看看