zoukankan      html  css  js  c++  java
  • python3基础教程[第一版] 下

    date:2018.2.6

    第六章  异常处理

    1.python异常处理机制

    异常处理

      • 错误处理
      • 终极行为

    异常处理基本结构

    try:
    
        可能引发异常的代码
    
    except 异常类型名称:
    
        异常处理代码
    
    else:
    
        没有发生异常时执行的代码

     

    常见异常类型

    • AttributeError:访问对象属性时引发的异常,如属性不存在或不支持赋值等
    • EOFError:
    • ImportError:
    • IndexError:
    • StopIteraion:
    • IndentationError:
    • TabError:
    • ZeroDivisionError:

    可以使用多个except语句,捕捉多种可能出现的异常

    except...as 结构:except(异常类型,异常类型,...) as 实例变量:

    如果不在except后面指明类型,则捕获所有异常

    异常处理结构可以嵌套

    try...finally终止行为:finally内的语句总会执行

    2.主动引发异常

    raise语句引发异常

    assert语句引发异常

    格式:assert 测试表达式 ,data :表达式为假时引发AssertionError异常,data为异常描述

    3.自定义异常

    BaseException类和Exception类

    前者是顶级异常超类,后者是前者的唯一子类

    自定义异常类只能继承自Exception类

    创建自定义异常类

    用自定义异常类保存异常日志

    以下为将用户注册信息管理系统加入异常后的程序(部分函数实现由于代码长度原因省略):

      1 try:
      2     from pickle import dump,load
      3 
      4     ##定义user 类,实例对象的uname属性存储用户名,pwd属性存储登陆密码
      5     class user:
      6         #构造函数__init__()创建实例对象时初始化用户名和登陆密码,默认值为None
      7         def __init__(self,uname=None,pwd=None):
      8             self.uname=uname
      9             self.pwd=pwd
     10 
     11         #修改用户名和密码
     12         def update(self,uname,pwd):
     13             self.uname=uname
     14             self.pwd=pwd
     15 
     16         #__repr__()方法定义对象打印格式
     17         def __repr__(self):
     18             return'username=%-16s password=%s'%(self.uname,self.pwd)
     19     ##user类代码结束
     20 
     21     ##函数showall()显示当前已注册用户信息
     22     def showall():
     23        
     24     #查找已注册用户
     25     def find(namekey):
     26     #函数结束
     27 
     28     #修改或删除操作
     29     def check_updata():
     30     #函数结束
     31 
     32     #添加新用户
     33     def adduser():
     34     #函数结束
     35 
     36     #将用户信息保存进文件
     37     def save(): 
     38     #函数结束
     39 
     40     #清空数据
     41     def clear():
     42     #函数结束
     43 
     44     #程序启动#########
     45     myfile=open(r'userdate.bin','rb')
     46     x=myfile.read(1)
     47     if x==b'':
     48         userlist=list()
     49     else:
     50         myfile.seek(0)
     51         userlist=load(myfile)
     52     myfile.close()
     53 
     54     while True:
     55         print('	用户注册信息管理系统')
     56         print('	1.显示全部已注册用户')
     57         print('	2.查找修改删除用户信息')
     58         print('	3.添加新用户')
     59         print('	4.保存用户数据')
     60         print('	5.清空数据')
     61         print('	6.退出系统')
     62         print()
     63         no=input('请输入序号选择对应菜单:')
     64         if   no=='1':
     65             showall()
     66         elif no=='2':
     67             check_updata()
     68         elif no=='3':
     69             adduser()
     70         elif no=='4':
     71             save()
     72         elif no=='5':
     73             clear()
     74         elif no=='6':
     75             print('系统已退出')
     76             break
     77         else:
     78             print('请重新输入')
     79 
     80     #程序结束
     81 
     82 except Exception as ex:
     83     from traceback import print_tb
     84     from datetime import datetime
     85     log=open(r'do_log.txt','a')
     86     x=datetime.today()
     87     #显示异常日志信息
     88     print('
    出错了:')
     89     print('日期时间 :  ',x)
     90     print('异常信息 :  ',ex)
     91     print('堆栈跟踪信息:')
     92     print_tb(ex.__traceback__)
     93 
     94     #将异常异常信息写入文件
     95     print('
    出错了:',file=log)
     96     print('日期时间 :  ', x,file=log)
     97     print('异常信息 :  ', ex.args[0],file=log)
     98     print('堆栈跟踪信息:',file=log)
     99     print_tb(ex.__traceback__,file=log)
    100     log.close()
    101     print('发生了错误,系统已退出')
    102 
    103 ''' 
    104 else:
    105 finally:
    106 '''
    107 #结束

    正常运行时,不会抛出异常,

    如果我们将信息文件userdata.bin重命名,则会抛出文件错误异常,

    以下则为异常内容和日志记录文件中的记录内容:

    #程序运行时抛出的异常信息
    
    出错了:
    日期时间 :   2018-02-06 17:20:07.692500
    异常信息 :   [Errno 2] No such file or directory: 'userdate.bin'
    堆栈跟踪信息:
      File "E:/Dev-Cpp/Pro/python/xitong/system.py", line 121, in <module>
        myfile=open(r'userdate.bin','rb')
    发生了错误,系统已退出
    
    Process finished with exit code 0
    //do_log文件中记录的内容
    
    出错了:
    日期时间 :   2018-02-06 17:20:07.692500
    异常信息 :   2
    堆栈跟踪信息:
      File "E:/Dev-Cpp/Pro/python/xitong/system.py", line 121, in <module>
        myfile=open(r'userdate.bin','rb')

    以下内容不再详细记录 

    第七章  python数据库编程

      1.了解关系数据库

    目前,Microsoft SQL Server、Microsoft Access、Oracle、MySQL、SQLite等常用的数据库都属于关系数据库

    • 数据模型
    • 层次模型
    • 关系模型
    • 面向对象模型

    关系数据库语言:SQL语言

    2.访问SQLite数据库

    python的SQL接口

    • 连接对象
    • 游标对象
    • select查询结果

    3.访问MySQL数据库

    4.访问Microsoft SQL Server 数据库

    第八章  tkinter GUI编程

    1.tkinter编程基础

    一个简单的tkinter GUI程序

    1 import tkinter     #导入tkinter模块
    2 root=tkinter.Tk()
    3 w=tkinter.Label(root,text='你好,python')
    4 w.pack()
    5 root.mainloop()

    显示如下:

    可以存为.py或.pyw文件,

    可以继续写为更简单模式:

    from tkinter import*     #导入tkinter模块
    Label(text='你好,python').pack()
    mainloop()

    2.tkinter组件

    3.对话框

    此书到此结束,末尾有一个GUI的用户注册系统,在此不再呈现

     

     

     

     

  • 相关阅读:
    SpringCloud的Archaius
    一些技术博文,有时间整理一下!
    spring-oauth-server实践:授权方式四:client_credentials 模式的refresh_token?
    spring-oauth-server实践:授权方式四:client_credentials 模式下有效期内重复申请 access_token ?
    spring-oauth-server实践:使用授权方式四:client_credentials 模式的客户端和服务端交互
    api-gateway实践(03)新服务网关
    spring-oauth-server实践:使用授权方式四:client_credentials 模式下access_token做业务!!!
    spring-oauth-server实践:授权方式四:client_credentials 模式下access_token的产生
    spring-oauth-server实践:授权方式三:PASSWORD模式下 authorities:ROLE_{user.privillege}, ROLE_USER
    spring-oauth-server实践:授权方式1、2、3和授权方式4的token对象.authorities产生方式比较
  • 原文地址:https://www.cnblogs.com/tenjl-exv/p/8422165.html
Copyright © 2011-2022 走看看