国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python中的try except與R語言中的tryCatch異常解決

python中的try except與R語言中的tryCatch異常解決

2022-02-25 13:25Kanny廣小隸 Python

這篇文章主要為大家介紹了python中的try except與R語言中的tryCatch異常解決的方式及分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助

1. 起因

當我們需要寫一個非常非常長的循環時,通常在某個循環如果出現error,那么整個代碼后面的循環就不能進行。

這時候試想,如果你在服務器上掛一個要跑很久的循環(并行),亦或是需要在自己電腦上掛一晚上跑東西,可能剛點完運行,美滋滋地上床后,程序突然出現問題。這時第二天滿懷期待地點亮屏幕,發現是一個大大的紅紅的ERROR時,估計頭發或許又會稀疏了不少。

于是這時候就會想,能不能在跑的時候,如果程序出現錯誤,那么我們直接繞開這些問題,進行下一次循環。

其實這種問題在PythonR中,都有相應的解決方法。

2. Python中的try/except

首先貼上官方說明文檔:

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

中文文檔:https://docspy3zh.readthedocs.io/en/lates t/tutorial/errors.html

這里我們仿造文檔中間的例子進行構造自己的例子,具體如下述代碼所示。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def divide(x, y):
    try:
        result = x / y
        
    except ZeroDivisionError:
        print("division by zero!")
    
    except:
        print('unknown error!')
    
    else:
        print("result is", result)
        
    finally:
        print("executing finally clause")

這里解釋一下程序邏輯:首先運行try,如果:

不報錯,就會跳到else,最后到final

分母為0的錯誤,會跳到except ZeroDivisionError,然后直接忽略else到最后的finally

其他類型的錯誤,會忽略except ZeroDivisionError,然后到except,接著再忽略else到最后的finally

也就是說無論如何,finally都是會運行的。

下面我們驗證三種輸入:

1)情形一

輸入:

?
1
divide(2, 1)

輸出:

?
1
2
result is 2.0
executing finally clause

2)情形二

輸入:

?
1
divide(2, 0)

輸出:

?
1
2
division by zero!
executing finally clause

3)情形三

?
1
divide("2", "1")

輸出:

?
1
2
error!
executing finally clause

3. R中的tryCatch

同樣的,在R中的tryCatch函數也是同樣解決類似的問題。

可參考官方說明文檔:trycatch: Evaluates an expression with the possibility to catch exceptions (DEPRECATED)

然后運行上面類似的程序,來看看用法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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)情形一

輸入:

?
1
divide(1, 2)

輸出:

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

我是先finally,再return,所以會是上述的輸出結果。

2)情形二

輸入:

?
1
divide(1, 0)

輸出:

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

注意,R會輸出Inf,這點與Python不同。

3)情形三

輸入:

?
1
divide(1, '0')

輸出:

?
1
2
3
4
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異常解決的詳細內容,更多關于python與R語言異常解決的資料請關注服務器之家其它相關文章!

原文鏈接:https://kanny.blog.csdn.net/article/details/84667843

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费观看国产视频在线 | 久久久久久久久久久高潮 | 亚洲欧美日韩在线 | 亚洲国产高清高潮精品美女 | 奇米成人 | av手机在线播放 | 中文日韩在线 | 久久国产精品视频 | 99re热精品视频 | 久久久九九 | 中文字幕国产一区 | 亚洲美女久久 | 久久精品国产一区二区三区 | 亚洲精品乱码久久久久久蜜桃不爽 | 米奇色网| 狼人综干网 | 中国一级黄色片子 | 精品毛片 | 想看一级毛片 | 一级免费视频 | 欧美国产精品一区二区三区 | 国产乱码精品一区二区三 | 91精品国产综合久久久久久 | 九九热免费观看 | 99精品久久久久久久免费 | 欧美日韩国产精品一区二区 | 国产成人精品一区二区三区视频 | 激情综合在线观看 | 人人爽人人爽人人片av | 亚洲狠狠丁香婷婷综合久久久 | 午夜成人免费视频 | 亚洲精品乱码久久久久久蜜桃麻豆 | 国产麻豆乱码精品一区二区三区 | 日日夜夜精品免费视频 | 久久懂色精品99综一区合 | 中文日韩在线 | 日韩一级精品视频在线观看 | 91久色| 中文字幕av一区二区三区 | 中文字幕成人在线 | 久久一区|