加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

深入讨论数据科学工具箱:Python和R的异常处理机制

发布时间:2021-05-31 10:42:44 所属栏目:教程 来源:互联网
导读:按照WikiPedia的文献,一段代码是非常安详的,假如这段代码运行时的失败不会发生有害效果,如内存泄漏、存储数据夹杂、或无效的输出。我们可以知道一段代码的异

按照WikiPedia的文献,一段代码是非常安详的,假如这段代码运行时的失败不会发生有害效果,如内存泄漏、存储数据夹杂、或无效的输出。我们可以知道一段代码的非常安详凡是分为下面五类:

非常安详凡是分为5个条理:

失败透明:假如呈现了非常,将不会对外进一步抛出该非常。(一样平常较量伟大)

强非常安详:可以运行失败,不外数据会回滚到代码运行前(无副浸染)

根基非常安详:运行失败导致的数据改观,使得代码运行前后数据纷歧致了(有副浸染)

最小非常安详:运行失败生涯了无效数据,可是还不会引起瓦解,资源不会泄漏(历程不会挂)

非常不安详:没有任何担保(历程也许会挂掉)

从上述的5个条理来看,我们可以知道,在平常写代码的时辰,对数据库、文件、收集等的IO操纵都是必要只管担保无副浸染的,也就是强非常安详。详细来说就是,RDBS操纵在失败的时辰必要回滚机制、全部IO操纵在***要担保IO毗连资源封锁。

着实和大都说话的非常机制的语法是相同的:Python和R都是通过抛出一个非常工具或一个列举类的值来返回一个非常;非常处理赏罚代码的浸染域由try开始,以***个非常处理赏罚子句(catch, except等)竣事;可持续呈现多少个非常处理赏罚子句,每个处理赏罚特定范例的非常。***通过finally子句,无论是否呈现非常它都将执行,用于开释非常处理赏罚所需的一些资源。

下面将详细先容二者的非常处理赏罚机制。

Python 中的非常处理赏罚机制

起首,Python 是一门面向工具说话,全部的非常类都是通过担任BaseException类来实现的,我们亦可以通过响应的担任来实现自界说的非常类,好比在事变流调治中行使AirflowException,详细实现可以直接看Airflow的源码。

究竟上,这些在我们代码处理赏罚范畴内的非常着实就是可以分成两个部门:

IO非常:由收集发抖、磁盘文件位置改观、数据库毗连改观等引起的IO非常题目。

运行期非常:因为计较可能传输的参数参数范例有误、参数值非常等等产生在运行期的非常,都同一被称为运行期非常。正常来说,IO上的非常我们都要有响应的try-catch-finally机制,在Python也就是如下实现:

try: 

   do something with IO 

except: 

   do something without IO 

finally: 

   close IO 

这里轻易犯的一个错误就是在except中又引入了新的IO操纵,好比在except中又引入了一个API的POST哀求可能数据库写操纵等等,这样假如在except阶段又产生了非常,将导致非常信息的丢失。

另一方面,对付也许的运行期非常则必要我们按照详细应用场景的需求来做响应的处理赏罚,一样平常就是碰着一个新的题目加一个新的非常捕捉机制,虽然这里也就检验到码农措施计划的功利,是否可以或许未雨绸缪。好比数组长度的搜查,传入字典的Key搜查等等。Python自己提供了富厚的非常处理赏罚范例而且易于拓展,正确行使将可以明显晋升措施的鲁棒性(保住码农的饭碗)。
 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读