亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2021年11月08日 15:34:05   作者:Kanny廣小隸  
這篇文章主要為大家介紹了python中的try except與R語言中的tryCatch異常解決的方式及分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助

1. 起因

當(dāng)我們需要寫一個非常非常長的循環(huán)時,通常在某個循環(huán)如果出現(xiàn)error,那么整個代碼后面的循環(huán)就不能進(jìn)行。

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

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

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

2. Python中的try/except

首先貼上官方說明文檔:

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

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

這里我們仿造文檔中間的例子進(jìn)行構(gòu)造自己的例子,具體如下述代碼所示。

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)情形一

輸入:

divide(2, 1)

輸出:

result is 2.0
executing finally clause

2)情形二

輸入:

divide(2, 0)

輸出:

division by zero!
executing finally clause

3)情形三

divide("2", "1")

輸出:

error!
executing finally clause

3. R中的tryCatch

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

可參考官方說明文檔: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這個對象,相當(dāng)于會輸出報錯信息。

下面為運行結(jié)果:

1)情形一

輸入:

divide(1, 2)

輸出:

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

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

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"

補充

最后如果我們?nèi)绻胍?code>R中忽略一些可能報錯的代碼時(不需要輸出任何報錯信息),直接使用try()即可。

以上就是python中的try except與R語言中的tryCatch異常解決的詳細(xì)內(nèi)容,更多關(guān)于python與R語言異常解決的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python如何實現(xiàn)定時器功能

    Python如何實現(xiàn)定時器功能

    在本篇文章里小編給大家分享的是關(guān)于Python中的簡單定時器實例及代碼,需要的朋友們可以學(xué)習(xí)下。
    2020-05-05
  • Python實現(xiàn)定時發(fā)送監(jiān)控郵件

    Python實現(xiàn)定時發(fā)送監(jiān)控郵件

    這篇文章主要為大家講解如何用python連接郵箱,實現(xiàn)自動發(fā)送監(jiān)控郵件,文中的示例講解詳細(xì),對我們了解Python有一定的幫助,需要的可以參考一下
    2022-01-01
  • Python 循環(huán)語句之 while,for語句詳解

    Python 循環(huán)語句之 while,for語句詳解

    Python中有兩種循環(huán),分別為:for循環(huán)和while循環(huán)。 for循環(huán)可以遍歷任何序列的項目,如一個列表或者一個字符串。while 語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。
    2018-04-04
  • Python編寫通訊錄通過數(shù)據(jù)庫存儲實現(xiàn)模糊查詢功能

    Python編寫通訊錄通過數(shù)據(jù)庫存儲實現(xiàn)模糊查詢功能

    數(shù)據(jù)庫存儲通訊錄,要求按姓名/電話號碼查詢,查詢條件只有一個輸入入口,自動識別輸入的是姓名還是號碼,允許模糊查詢。這篇文章主要介紹了Python編寫通訊錄,支持模糊查詢,利用數(shù)據(jù)庫存儲,需要的朋友可以參考下
    2019-07-07
  • Python Pandas Dataframe.describe()使用及代碼實例

    Python Pandas Dataframe.describe()使用及代碼實例

    這篇文章主要介紹了Python Pandas Dataframe.describe()使用及代碼實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python從列表推導(dǎo)到zip()函數(shù)的5種技巧總結(jié)

    Python從列表推導(dǎo)到zip()函數(shù)的5種技巧總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于Python從列表推導(dǎo)到zip()函數(shù)的5種技巧的相關(guān)知識點和代碼,需要的朋友們參考學(xué)習(xí)下。
    2019-10-10
  • python求列表對應(yīng)元素的乘積和的實現(xiàn)

    python求列表對應(yīng)元素的乘積和的實現(xiàn)

    這篇文章主要介紹了python求列表對應(yīng)元素的乘積和的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python opencv畫局部放大圖實例教程

    python opencv畫局部放大圖實例教程

    這篇文章主要給大家介紹了關(guān)于python opencv畫局部放大圖的相關(guān)資料,獲取鼠標(biāo)的單擊相應(yīng)以及鼠標(biāo)的移動信息,進(jìn)行放大功能的實現(xiàn),需要的朋友可以參考下
    2021-10-10
  • 基于Python實現(xiàn)一鍵批量查詢郵編

    基于Python實現(xiàn)一鍵批量查詢郵編

    這篇文章主要為大家詳細(xì)介紹了如何利用Python快速實現(xiàn)查詢excel表格里所有郵編對應(yīng)的地址信息,將輸出的省市縣信息分開放在不同的單元格中,感興趣的可以了解下
    2023-08-08
  • Python實現(xiàn)創(chuàng)建快速剪映草稿軌道自動生成視頻

    Python實現(xiàn)創(chuàng)建快速剪映草稿軌道自動生成視頻

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實現(xiàn)創(chuàng)建快速剪映草稿軌道并自動生成視頻,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-08-08

最新評論