最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pycharm的debug調(diào)試以及異常,Python中錯(cuò)誤的處理過(guò)程

 更新時(shí)間:2024年01月29日 09:59:20   作者:Make_magic  
這篇文章主要介紹了pycharm的debug調(diào)試以及異常,Python中錯(cuò)誤的處理過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

第一次寫(xiě)關(guān)于pycharm的debug調(diào)試以及python代碼運(yùn)行報(bào)錯(cuò)處理的帖子,錯(cuò)誤地方請(qǐng)大家指出。

第一個(gè)部分:pycharm的debug調(diào)試

作為一個(gè)非科班出生的學(xué)生,平時(shí)看代碼的時(shí)候特別的難懂,這時(shí)候?qū)Υadebug單步調(diào)試可以很好的看代碼的具體信息。讓我們能夠更加清晰的理解代碼具體傳遞過(guò)程。

debug:我們?cè)趐ycharm窗口的右上角可以看見(jiàn)這個(gè)小蟲(chóng)子(七星瓢蟲(chóng))圖標(biāo)。

同時(shí)我們也可以右擊鼠標(biāo),這時(shí)候也可以發(fā)現(xiàn)這個(gè)小蟲(chóng)子。

當(dāng)然如果代碼沒(méi)有錯(cuò)誤,點(diǎn)擊小蟲(chóng)子和run(上圖最左邊的三角符號(hào))運(yùn)行是一樣的效果。

如果我們想讓它在某一行停下來(lái),我們可以在某一行打斷點(diǎn)(就在某一行旁邊點(diǎn)擊鼠標(biāo)左鍵),如下圖:這時(shí)候debug,代碼運(yùn)行從第一行到第12行,而第13行代碼停止運(yùn)行。

而Special Variables為特殊變量:在這里會(huì)顯示運(yùn)行結(jié)果,如下圖。

Special Variables上邊的結(jié)果為正常變量(如上圖)

下邊重點(diǎn)介紹幾個(gè)按鈕: 

1.step over(F8) 單步調(diào)試

在當(dāng)前這個(gè)腳本安裝代碼順序逐行運(yùn)行,點(diǎn)擊一下,就會(huì)在Variables顯示運(yùn)行結(jié)果,如下圖但我按鍵盤(pán)F8鍵,藍(lán)色行由17行跳轉(zhuǎn)到18行,Variables和17行后邊都會(huì)顯示詳細(xì)信息。

2.Step Into(F7) 單步調(diào)試

在單步執(zhí)行時(shí),遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行,有的會(huì)跳到源代碼里面去執(zhí)行。

如下圖,我將第13行打上斷點(diǎn),當(dāng)我按鍵盤(pán)鍵F7的時(shí)候直接跳入定義的函數(shù)中去,這時(shí)候藍(lán)色行在迪行,我們可以看到第6行的詳細(xì)信息。

3.Step Into My Code(Alt+Shift+F7快捷鍵)

在單步執(zhí)行時(shí),遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行,不會(huì)進(jìn)入到源碼中。所以Step Into My Code就我而言功能和Step Into比較相似,一般而言用處不大。 

4.Step Out(Shift+F8快捷鍵)

當(dāng)我們運(yùn)行代碼進(jìn)入了一個(gè)函數(shù)體中,看了幾行代碼懂這個(gè)函數(shù)體是什么意思了,我想要跳出當(dāng)前函數(shù)體,返回調(diào)用此函數(shù)的代碼行,即使用此功能即可。這個(gè)功能還是比較方便。 

5.Run to Cursor(Alt+F9)

如果我們打了多個(gè)斷點(diǎn)的時(shí)候,我們按鍵盤(pán)F9鍵,直接從當(dāng)前斷點(diǎn)運(yùn)行到下一個(gè)斷點(diǎn)。如果只打了一個(gè)斷點(diǎn),直接運(yùn)行到腳本結(jié)束。

當(dāng)然我覺(jué)得用的最多的應(yīng)該是Step Over(F7)和Step Into(F8)這兩個(gè)鍵,這就是我對(duì)pycharm的debug調(diào)試功能的理解,有什么講錯(cuò)了的地方請(qǐng)大家指出,謝謝!

第二部分:異常,Python 中錯(cuò)誤的處理方式

這里邊所用到的代碼小例子是看b站視頻所講解的小例子。

當(dāng)程序在運(yùn)行時(shí) Python 解釋器遇到到一個(gè)錯(cuò)誤,這時(shí)候就會(huì)停止程序的執(zhí)行,并且提示一些錯(cuò)誤信息,這就是異常。 

1.簡(jiǎn)單的捕獲異常語(yǔ)法

我們可以增加 try(嘗試) 來(lái)捕獲異常。

捕獲異常最簡(jiǎn)單的語(yǔ)法格式:

try:
    嘗試執(zhí)行的代碼
except:
    出現(xiàn)錯(cuò)誤的處理

try except 語(yǔ)句的執(zhí)行流程如下:

我們執(zhí)行 try (嘗試)里面的代碼塊,這個(gè)時(shí)候是不確定這個(gè)代碼能否正常執(zhí)行。執(zhí)行異常時(shí)系統(tǒng)會(huì)自動(dòng)生成一個(gè)異常類(lèi)型,并將該異常交給 Python 解釋器。

Python 解釋器收到異常對(duì)象,會(huì)通過(guò)except塊來(lái)處理這個(gè)異常。

如果Python 解釋器找不到處理異常的 except 塊程序運(yùn)行終止,Python 解釋器也將退出。

小例子:

try:
    # 提示用戶(hù)輸入一個(gè)數(shù)字
    num = int(input("請(qǐng)輸入數(shù)字:"))
except:
    print("請(qǐng)輸入正確的數(shù)字")

這時(shí)候運(yùn)行代碼,輸入正確數(shù)字9,會(huì)出現(xiàn)運(yùn)行正常并程序運(yùn)行結(jié)束

如果這個(gè)時(shí)候我輸入一個(gè)漢字或者一個(gè)字母,這個(gè)時(shí)候會(huì)通過(guò)except塊來(lái)處理這個(gè)異常。

2.錯(cuò)誤類(lèi)型捕獲

在程序執(zhí)行時(shí)遇到不同類(lèi)型的異常,做出不同的響應(yīng),這個(gè)時(shí)候我們需要捕獲錯(cuò)誤類(lèi)型是什么。

語(yǔ)法格式:

try:
    # 嘗試執(zhí)行的代碼
    pass
except 錯(cuò)誤類(lèi)型1:
    # 針對(duì)錯(cuò)誤類(lèi)型1,對(duì)應(yīng)的代碼處理
    pass
except (錯(cuò)誤類(lèi)型2, 錯(cuò)誤類(lèi)型3):
    # 針對(duì)錯(cuò)誤類(lèi)型2 和 3,對(duì)應(yīng)的代碼處理
    pass
except Exception as result:
    print("未知錯(cuò)誤 %s" % result)

我們可以用一個(gè) except 塊可以同時(shí)處理多種異常。

小例子:

try:
    num = int(input("請(qǐng)輸入整數(shù):"))
    result = 8 / num
    print(result)
except ValueError:
    print("請(qǐng)輸入正確的整數(shù)")
except ZeroDivisionError:
    print("除 0 錯(cuò)誤")

當(dāng)我運(yùn)行程序,輸入hah,結(jié)果如下:

當(dāng)我運(yùn)行程序,輸入0,結(jié)果如下:

顯然不同類(lèi)型的錯(cuò)誤,運(yùn)行后通過(guò)except塊來(lái)處理這個(gè)異常的類(lèi)型也不一樣。

當(dāng)然在開(kāi)發(fā)時(shí),要預(yù)判到所有可能出現(xiàn)的錯(cuò)誤,還是有一定難度的。這時(shí)候可以使用捕獲未知錯(cuò)誤,語(yǔ)法如下:

except Exception as result:
    print("未知錯(cuò)誤 %s" % result)

3.異常捕獲的完整語(yǔ)法

當(dāng)然為了能夠處理復(fù)雜的異常情況,完整的異常語(yǔ)法如下:

try:
    # 嘗試執(zhí)行的代碼
    pass
except 錯(cuò)誤類(lèi)型1:
    # 針對(duì)錯(cuò)誤類(lèi)型1,對(duì)應(yīng)的代碼處理
    pass
except 錯(cuò)誤類(lèi)型2:
    # 針對(duì)錯(cuò)誤類(lèi)型2,對(duì)應(yīng)的代碼處理
    pass
except (錯(cuò)誤類(lèi)型3, 錯(cuò)誤類(lèi)型4):
    # 針對(duì)錯(cuò)誤類(lèi)型3 和 4,對(duì)應(yīng)的代碼處理
    pass
except Exception as result:
    # 打印錯(cuò)誤信息
    print(result)
else:
    # 沒(méi)有異常才會(huì)執(zhí)行的代碼
    pass
finally:
    # 無(wú)論是否有異常,都會(huì)執(zhí)行的代碼
    print("無(wú)論是否有異常,都會(huì)執(zhí)行的代碼")
  • else:只有在沒(méi)有異常時(shí)才會(huì)執(zhí)行的代碼。
  • finally: 無(wú)論是否有異常,都會(huì)執(zhí)行的代碼。
try:
    num = int(input("請(qǐng)輸入整數(shù):"))
    result = 8 / num
    print(result)
except ValueError:
    print("請(qǐng)輸入正確的整數(shù)")
except ZeroDivisionError:
    print("除 0 錯(cuò)誤")
except Exception as result:
    print("未知錯(cuò)誤 %s" % result)
else:
    print("正常執(zhí)行")
finally:
    print("執(zhí)行完成,但是不保證正確")

4.異常的傳遞

當(dāng)函數(shù)/方法執(zhí)行出現(xiàn)異常,會(huì)將異常傳遞給函數(shù)/方法的調(diào)用一方,如果傳遞到主程序,仍然沒(méi)有異常處理,程序才會(huì)被終止。在開(kāi)發(fā)中,可以在主函數(shù)中增加異常捕獲,而在主函數(shù)中調(diào)用的其他函數(shù),只要出現(xiàn)異常,都會(huì)傳遞到主函數(shù)的異常捕獲中,這樣就不需要在代碼中,增加大量的異常捕獲,能夠保證代碼的整潔。

小例子:

  • 定義函數(shù) demo1() 提示用戶(hù)輸入一個(gè)整數(shù)并且返回
  • 定義函數(shù) demo2() 調(diào)用 demo1()
  • 在主程序中調(diào)用 demo2()
def demo1():
    return int(input("請(qǐng)輸入一個(gè)整數(shù):"))

def demo2():
    return demo1()

try:
    print(demo2())
except ValueError:
    print("請(qǐng)輸入正確的整數(shù)")
except Exception as result:
    print("未知錯(cuò)誤 %s" % result)

我嘗試在三個(gè)地方輸入:

def demo1():
    # try:
     return int(input("請(qǐng)輸入一個(gè)整數(shù):"))
    # except:
    #     pass

def demo2():
    # try:
        return demo1()
    # except:
    #     pass

# try:
demo2()
    # print(demo2())
# except ValueError:
#     print("請(qǐng)輸入正確的整數(shù)")
# except Exception as result:
#     print("未知錯(cuò)誤 %s" % result)

看錯(cuò)三步法

1.看line后面的數(shù)字,表示在哪一行犯錯(cuò)了,快速定位

2.看列出的這行代碼,準(zhǔn)確定位

3.報(bào)錯(cuò)原因:TypeError這一行就是闡釋為什么錯(cuò)了

其實(shí)我認(rèn)為在最后一句報(bào)錯(cuò)那個(gè)地方去處理就行。

但是額,對(duì)于底下有很多行報(bào)紅,這里我也是不太清楚,只能按照異常傳遞試,如果說(shuō)錯(cuò)了麻煩大家指出我的錯(cuò)誤,并且希望大家也說(shuō)說(shuō)多行報(bào)紅該怎么去看這種錯(cuò)誤,謝謝大家。

異常分類(lèi)

  • BaseException 所有異常的基類(lèi)
  • Exception 常見(jiàn)錯(cuò)誤的基類(lèi)
  • ArithmeticError 所有數(shù)值計(jì)算錯(cuò)誤的基類(lèi)
  • Warning 警告的基類(lèi)
  • AssertError 斷言語(yǔ)句(assert)失敗
  • AttributeError 嘗試訪問(wèn)未知的對(duì)象屬性
  • DeprecattionWarning 關(guān)于被棄用的特征的警告
  • EOFError 用戶(hù)輸入文件末尾標(biāo)志EOF(Ctrl+d)
  • FloattingPointError 浮點(diǎn)計(jì)算錯(cuò)誤
  • FutureWarning 關(guān)于構(gòu)造將來(lái)語(yǔ)義會(huì)有改變的警告
  • GeneratorExit generator.close()方法被調(diào)用的時(shí)候
  • ImportError 導(dǎo)入模塊失敗的時(shí)候
  • IndexError 索引超出序列的范圍
  • KeyError 字典中查找一個(gè)不存在的關(guān)鍵字
  • KeyboardInterrupt 用戶(hù)輸入中斷鍵(Ctrl+c)
  • MemoryError 內(nèi)存溢出(可通過(guò)刪除對(duì)象釋放內(nèi)存)
  • NamerError 嘗試訪問(wèn)一個(gè)不存在的變量
  • NotImplementedError 尚未實(shí)現(xiàn)的方法
  • OSError 操作系統(tǒng)產(chǎn)生的異常(例如打開(kāi)一個(gè)不存在的文件)
  • OverflowError 數(shù)值運(yùn)算超出最大限制
  • OverflowWarning 舊的關(guān)于自動(dòng)提升為長(zhǎng)整型(long)的警告
  • PendingDeprecationWarning 關(guān)于特征會(huì)被遺棄的警告
  • ReferenceError 弱引用(weak reference)試圖訪問(wèn)一個(gè)已經(jīng)被垃圾回收機(jī)制回收了的對(duì)象
  • RuntimeError 一般的運(yùn)行時(shí)錯(cuò)誤
  • RuntimeWarning 可疑的運(yùn)行行為(runtime behavior)的警告
  • StopIteration 迭代器沒(méi)有更多的值
  • SyntaxError Python的語(yǔ)法錯(cuò)誤
  • SyntaxWarning 可疑的語(yǔ)法的警告
  • IndentationError 縮進(jìn)錯(cuò)誤
  • TabError Tab和空格混合使用
  • SystemError Python編譯器系統(tǒng)錯(cuò)誤
  • SystemExit Python編譯器進(jìn)程被關(guān)閉
  • TypeError 不同類(lèi)型間的無(wú)效操作
  • UnboundLocalError 訪問(wèn)一個(gè)未初始化的本地變量(NameError的子類(lèi))
  • UnicodeError Unicode相關(guān)的錯(cuò)誤(ValueError的子類(lèi))
  • UnicodeEncodeError Unicode編碼時(shí)的錯(cuò)誤(UnicodeError的子類(lèi))
  • UnicodeDecodeError Unicode解碼時(shí)的錯(cuò)誤(UnicodeError的子類(lèi))
  • UserWarning 用戶(hù)代碼生成的警告
  • ValueError 傳入無(wú)效的參數(shù)
  • ZeroDivisionError 除數(shù)為零

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入詳解Python日志配置模板的全攻略

    深入詳解Python日志配置模板的全攻略

    這篇文章主要為大家詳細(xì)介紹了Python一個(gè)完整項(xiàng)目日志配置模板,包括YAML配置,?Python加載腳本和使用示例,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2026-03-03
  • Python設(shè)計(jì)模式之原型模式實(shí)例詳解

    Python設(shè)計(jì)模式之原型模式實(shí)例詳解

    這篇文章主要介紹了Python設(shè)計(jì)模式之原型模式,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python原型模式的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • R語(yǔ)言屬性知識(shí)點(diǎn)總結(jié)及實(shí)例

    R語(yǔ)言屬性知識(shí)點(diǎn)總結(jié)及實(shí)例

    在本篇文章里小編給大家整理了一篇關(guān)于R語(yǔ)言屬性知識(shí)點(diǎn)總結(jié)及實(shí)例內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-03-03
  • Spring http服務(wù)遠(yuǎn)程調(diào)用實(shí)現(xiàn)過(guò)程解析

    Spring http服務(wù)遠(yuǎn)程調(diào)用實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Spring http服務(wù)遠(yuǎn)程調(diào)用實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 一文教會(huì)你pandas?plot各種繪圖

    一文教會(huì)你pandas?plot各種繪圖

    這篇文章主要給大家介紹了關(guān)于pandas?plot各種繪圖的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Python推導(dǎo)式Comprehensions的終極入門(mén)指南

    Python推導(dǎo)式Comprehensions的終極入門(mén)指南

    在 Python 的世界里,你經(jīng)常會(huì)聽(tīng)到Pythonic,而推導(dǎo)式正是 Pythonic 代碼的典型代表,本文將帶你從零開(kāi)始,系統(tǒng)地掌握 Python 中的列表、字典、集合推導(dǎo)式以及生成器表達(dá)式,希望對(duì)大家有所幫助
    2025-12-12
  • python實(shí)現(xiàn)車(chē)牌識(shí)別的示例代碼

    python實(shí)現(xiàn)車(chē)牌識(shí)別的示例代碼

    這篇文章主要介紹了python實(shí)現(xiàn)車(chē)牌識(shí)別的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Pandas中八個(gè)常用option設(shè)置的示例詳解

    Pandas中八個(gè)常用option設(shè)置的示例詳解

    通過(guò)pandas的使用,我們經(jīng)常要交互式地展示表格(dataframe)、分析表格。本文整理了8個(gè)常用的配置選項(xiàng),使用可以提高很多效率,需要的可以參考一下
    2022-06-06
  • 詳解Python中time()方法的使用的教程

    詳解Python中time()方法的使用的教程

    這篇文章主要介紹了詳解Python中time()方法的使用的教程,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • 一文帶你玩轉(zhuǎn)Python屬性和方法

    一文帶你玩轉(zhuǎn)Python屬性和方法

    Python是一種簡(jiǎn)潔而強(qiáng)大的編程語(yǔ)言,其支持面向?qū)ο蟮木幊谭妒?,本文將從入門(mén)到精通介紹Python中的屬性和方法,幫助大家深入了解這些重要的概念,并學(xué)會(huì)如何在實(shí)際開(kāi)發(fā)中靈活應(yīng)用它們
    2023-07-07

最新評(píng)論

仁寿县| 二手房| 上虞市| 疏附县| 喀喇沁旗| 阿拉善右旗| 葫芦岛市| 清镇市| 潼南县| 浦北县| 镇安县| 荆门市| 秦皇岛市| 盐津县| 哈巴河县| 哈巴河县| 阳朔县| 泰兴市| 武隆县| 长治市| 通城县| 赤水市| 贵定县| 寿阳县| 依安县| 新民市| 绥芬河市| 保山市| 夹江县| 陈巴尔虎旗| 恩平市| 洛浦县| 怀柔区| 咸宁市| 肥东县| 邮箱| 龙游县| 锡林浩特市| 太谷县| 呼图壁县| 富蕴县|