10 Sep 2015
鲁棒性(robust健壮的) 没有完美的程序,程序员要知道代码可能出现的问题,并加以控制
处理异常,明确的捕获可能出现的异常,并做出反馈
抛出异常,当我们的底层程序发生异常,而上层程序并不需要关心具体的异常时,可用raise抛出指定异常。raise Exception
自定义异常,项目中集中管理错误及异常,可在各程序块中自行捕获异常并raise出指定格式的错误。class UserError(Exception): pass
定义清理动作,finally clause可以帮助我们在异常发生后处理善后工作,例如文件的关闭等
JSON-JavaScript Object Notation,是一种轻量级的数据转换格式。
常用操作:
pickle跟json类似,但只限于python使用,不如json应用范围广泛
序列化(Serialization)将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化使其他代码可以查看或修改那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 SecurityPermission。在默认策略下,通过 Internet 下载的代码或 Intranet 代码不会授予该权限;只有本地计算机上的代码才被授予该权限。
通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。
对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试生成特定字段来保存不可序列化的重要数据。如果无法实现这一点,则应注意该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。
用dict实现缓存,疑问:数量最大值?可以设置过期吗?