python 错误代码和异常系统设计
2017-11-29 11:20
357 查看
问题来源:
在开发界面和逻辑部分分离开发的时候,为了让用户知道当前逻辑运行出错时,界面上友好提示用户,怎样操作去正常执行。这时候就需要要错误代码设计和所有逻辑API接口返回格式一致。在返回内容格式中,包含错误代码、错误名,错误描述以及数据。
现有技术分析:
Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话遇到一个未被捕捉的SystemExit异常,会话就会终止。
try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序)
try/finally: 无论异常是否发生,都执行清理行为 (发生异常时程序会中断程序,只不过会执行finally后的代码)
raise: 手动在代码中接触发异常。
assert: 有条件地在程序代码中触发异常。
解决方案:
在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类:Python异常是那些类的对象。执行raise语句时,Python会创建指定的异常类的一个对象。raise语句还可指定对异常对象进行初始化的参数。为此,请在异常类的名称后添加一个逗号以及指定的参数(或者由参数构成的一个元组)。
例:
通过把警告和错误抛出异常,这样在给UI提示是,通过逻辑API返回的数据结构,可以清楚知道逻辑部分运行过程实时的问题,并能提高用户体验。
错误代码,可以采用几位数表示,组合表示,只要能区分错误或警告问题
直接上代码
在开发界面和逻辑部分分离开发的时候,为了让用户知道当前逻辑运行出错时,界面上友好提示用户,怎样操作去正常执行。这时候就需要要错误代码设计和所有逻辑API接口返回格式一致。在返回内容格式中,包含错误代码、错误名,错误描述以及数据。
现有技术分析:
Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话遇到一个未被捕捉的SystemExit异常,会话就会终止。
try/except:捕捉由代码中的异常并恢复,匹配except里面的错误,并自行except中定义的代码,后继续执行程序(发生异常后,由except捕捉到异常后,不会中断程序,继续执行try语句后面的程序)
try/finally: 无论异常是否发生,都执行清理行为 (发生异常时程序会中断程序,只不过会执行finally后的代码)
raise: 手动在代码中接触发异常。
assert: 有条件地在程序代码中触发异常。
解决方案:
用raise语句手工引发一个异常: 自定义异常
raise [exception[,data]]
在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。异常名称标识出具体的类:Python异常是那些类的对象。执行raise语句时,Python会创建指定的异常类的一个对象。raise语句还可指定对异常对象进行初始化的参数。为此,请在异常类的名称后添加一个逗号以及指定的参数(或者由参数构成的一个元组)。
例:
try: raise MyError #自己抛出一个异常 except MyError: print 'a error'
通过把警告和错误抛出异常,这样在给UI提示是,通过逻辑API返回的数据结构,可以清楚知道逻辑部分运行过程实时的问题,并能提高用户体验。
错误代码,可以采用几位数表示,组合表示,只要能区分错误或警告问题
直接上代码
#coding = utf-8 #author = ao.deng class Result: def __init__(self): self.name = '' self.code = '' self.description = '' self.data ={} def setData(self,*args): self.data=args def getData(self): return self.data class RuntimeException(Exception): '''''A user-defined exception class.''' def __init__(self, name, code,description): Exception.__init__(self) self.name = name self.code = code self.description = description class Test: def printD(self,i): if i > 2: raise RuntimeException("数据太大", '1100',"i>3") def printDD(self,i): a = [0] i += 1 print(a[i]) def printDDD(self,i): a= [0,1] i+=1 if i ==1: raise RuntimeException("假设需要警告", '1101', "a[%d]" % i) #它会抛给最近except去捕获 return try: print(a[i]) except Exception as x: raise RuntimeException("越界", '1001',"a[%d]"%i) def printDDDD(self,i): a= [0,1] i+=1 try: if i > 1: raise RuntimeException("警告", '1101', "a[%d]" % i) #它会抛给最近except去捕获 return print(a[i]) except Exception as x: raise RuntimeException("越界", '1001',"a[%d]"%i) def test(self): mResultList=[] for i in range(5): try: # self.printD(i) # self.printDD(i) self.printDDD(i) except RuntimeException as x: mResult = Result() mResult.name = x.name mResult.code = x.code mResult.description = x.description mResult.setData({}) mResultList.append(mResult) if x.code[1]=='1': print("警告 继续") continue else: return mResultList except Exception as e: mResult = Result() mResult.name = "Error" mResult.code = "1001" mResult.description = str(e) mResult.setData({}) mResultList.append(mResult) return mResultList mResult = Result() mResult.name = "Ok" mResult.code = "1000" mResult.description = "运行正确" mResult.setData([1, 3, 5], {2: 3}, 4, 5, i) mResultList.append(mResult) return mResultList if __name__=="__main__": mTest =Test() xxList=mTest.test() for xx in xxList: print(xx.code) if xx.code[1]=='1': print("警告") elif xx.code== "1001": print("错误") else: print("正确") print(xx.name) print(xx.description) print(xx.getData())
相关文章推荐
- 阶段总结--业务系统代码中常见的异常错误总结以及避免方法
- 【求助,已经解决】未能注册sharepoint服务。已引发类型为SYSTEM.ARGUMENTEXCEPTION异常,其他异常信息,加密和解密过程中出错,系统错误代码为997
- Python Jupyter Notebook 中的错误异常与代码调试
- <机器学习系统设计>第十章(上)----代码与错误分析
- Python基础学习代码之错误和异常
- 针对有效的错误处理设计异常管理系统
- python 系统级错误代码
- Python 错误和异常代码详解
- Head First Python---------(一)第一章(初识Python__人人都爱列表)、第二章(共享你的代码__函数模块)、第三章(文件与异常__处理错误)
- Symbian S60系统错误代码及原因
- 网络应用系统---系统设计架构个人项目实战示例(各种页面代码A)
- 邮件系统常见错误代码解释
- .NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
- .NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
- 邮件系统常见错误代码解释
- 基于ARM 的嵌入式系统程序开发要点--(四)异常处理机制的设计
- .NET Interop: 从IErrorInfo错误对象获得托管代码的异常信息
- Python指南--错误和异常
- iis系统出错的意思&Internet Explorer 错误代码
- microsoft WINDOWS 系统错误代码