如何解决python中的try except与R语言中的tryCatch异常问题

技术如何解决python中的try except与R语言中的tryCatch异常问题小编给大家分享一下如何解决python中的try except与R语言中的tryCatch异常问题,希望大家阅读完这篇文章之后都有所收获

边肖将与大家分享如何解决python中的try除外和R语言中的tryCatch异常的问题。希望大家看完这篇文章后有所收获。我们一起讨论一下吧!

00-1010当我们需要写一个非常非常长的循环时,通常如果一个循环中有错误,那么整个代码后面的循环就无法进行。

这个时候,想象一下,如果你在服务器上挂了一个需要很长时间才能运行的循环(并行),或者你需要在电脑上挂一整夜的东西,你可能只是点击运行,在你愉快地睡觉后,程序突然出现了问题。这时,第二天,屏幕因期待而亮,当发现是一个红色的大ERROR时,估计头发可能又稀疏了。

所以在这个时候,我会想,如果程序在运行的时候有什么错误,那么我们可以直接绕过这些问题,进行下一个循环。

其实对于这个问题,Python和R都有相应的解决方案。

00-1010首先,粘贴官方说明:

英文文件:https://docs.python.org/3/tutorial/errors.html

中文文档:https://docspy3zh.readthedocs.io/en/lates t/教程/错误

这里,我们复制文档中间的示例来构建我们自己的示例,如下面的代码所示。

defdivide(x,y):

尝试:

结果=x/y

例外零分割错误:

print('divisionbyzero!')

除外:

打印('未知错误!')

else:

打印(' resultis ',result)

最后:

Print ('Executing finally lause ')这里,解释一下程序逻辑:如果:

如果你没有报告错误,你会跳到else,最后跳到final。

如果分母为0,错误将跳转到除ZeroDivisionError之外的地方,然后忽略else,直到最后。

其他类型的错误,会忽略除ZeroDivisionError之外的,然后转到除,然后忽略else到最后。

也就是说,最后无论如何都会跑。

我们验证以下三个输入:

00-1010输入:

分频(2,1)输出:

resultis2.0

最终执行laus

1. 起因

输入:

分频(2,0)输出:

分裂!

执行nbsp

;finally clause

3)情形三

divide("2", "1")

输出:

error!
executing finally clause

3. R中的tryCatch

同样的,在R中的tryCatch函数也是同样解决类似的问题。

可参考官方说明文档:trycatch: Evaluates an expression with the possibility to catch exceptions (DEPRECATED)

然后运行上面类似的程序,来看看用法

divide <- function(x, y) {
  result <- tryCatch({
    x / y
  }, warning = function(war) {
    cat("warning!", war, "\n")
  }, error = function(err) {
    cat("error!", err, "\n")
  }, finally = {
    print("executing finally clause")
  })
  
  return(result)
}

这里需要格外注意的是,tryCatch后面是要加上小括号和大括号的。另外我加上了err这个对象,相当于会输出报错信息。

下面为运行结果:

1)情形一

输入:

divide(1, 2)

输出:

[1] "executing finally clause"
[1] 0.5

我是先finally,再return,所以会是上述的输出结果。

2)情形二

输入:

divide(1, 0)

输出:

[1] "executing finally clause"
[1] Inf

注意,R会输出Inf,这点与Python不同。

3)情形三

输入:

divide(1, '0')

输出:

error! 
 Error in cat("error!", err, "\n") : 
  argument 2 (type 'list') cannot be handled by 'cat'
[1] "executing finally clause"

补充

最后如果我们如果想要在R中忽略一些可能报错的代码时(不需要输出任何报错信息),直接使用try()即可。

看完了这篇文章,相信你对“如何解决python中的try except与R语言中的tryCatch异常问题”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/89356.html

(0)

相关推荐

  • 7.数组和正则

    技术7.数组和正则 7.数组和正则1.数组数据结构
    1.1什么是数组
    数组的英文是array , 可以存入多个不同类型的数据,是一个复合数据类型。
    1.2定义数组
    $a1 = array(1 , 1.5

    礼包 2021年12月23日
  • 如何使用Python进行社交媒体情感分析

    技术如何使用Python进行社交媒体情感分析这篇文章给大家介绍如何使用Python进行社交媒体情感分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。学习自然语言处理的基础知识并探索两个有用的 Pyt

    攻略 2021年10月26日
  • ASP.NET数据库连接的实例分析

    技术ASP.NET数据库连接的实例分析这篇文章给大家介绍ASP.NET数据库连接的实例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。ASP.NET数据库连接实例展现: using System;

    攻略 2021年12月1日
  • Windows中能够提取出图片边缘特征的网络是什么

    技术Windows中能够提取出图片边缘特征的网络是什么这篇文章主要介绍“Windows中能够提取出图片边缘特征的网络是什么”,在日常操作中,相信很多人在Windows中能够提取出图片边缘特征的网络是什么问题上存在疑惑,小

    攻略 2021年11月9日
  • 沐浴露能洗头吗,用沐浴露洗头发会有什么影响吗

    技术沐浴露能洗头吗,用沐浴露洗头发会有什么影响吗洗澡时误将沐浴露当洗发水洗头的事沐浴露能洗头吗,相信不少同学们都遇到过吧。那么,用沐浴露洗头会造成哪些危害呢?首先,洗发水和沐浴露的主体成分是相同的,唯一的区别是洗发水里添

    生活 2021年10月22日
  • 落枕吃什么药好得快,“缠腰蛇”怎么治好得快

    技术落枕吃什么药好得快,“缠腰蛇”怎么治好得快缠腰蛇学名叫带状疱疹落枕吃什么药好得快。带状疱疹是由水痘-带状疱疹病毒引起的,初次感染得的是水痘,之后病毒会潜伏在神经根内,多年以后,当免疫力低下的时候病毒会再次被激活,这时

    生活 2021年10月30日