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

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

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

服務器之家 - 腳本之家 - Python - Python常遇到的錯誤和異常

Python常遇到的錯誤和異常

2022-02-23 00:13一碗周 Python

這篇文章主要介紹了Python常遇到的錯誤和異常,在日常的學習Python過程中,由于本身的編程水平受限,時不時的給我拋出一個異常讓我真的很難受;在學習的過程中發現Python中的錯誤分為語法錯誤和異常兩種。下面來看看下面文章

在日常的學習Python過程中,由于本身的編程水平受限,時不時的給我拋出一個異常讓我真的很難受;在學習的過程中發現Python中的錯誤分為語法錯誤和異常兩種。

 

1、語法錯誤

Python中的語法錯誤通常是最為明顯的錯誤了,由于不按照要求書寫代碼,往往就容易出現語法錯誤

示例代碼:

>>> print("hello world)
  File "<stdin>", line 1
    print("hello world)
                      ^
SyntaxError: EOL while scanning string literal
>>> while True print("hello world")
  File "<stdin>", line 1
    while True print("hello world")
                   ^
SyntaxError: invalid syntax

Python的語法解釋器會找出最先出現錯誤的位置,并在其下面標記一個小小的箭頭

 

2、異常

什么是異常?異常就是一個事件,該事件會在程序的運行過程中發生,影響程序的正常執行;因為Python中萬物皆對象,所以異常也是一個對象,就表示一個錯誤;一般情況下即使Python語法是正確的,在運行它的時候,也有可能發生錯誤,運行期檢測到的錯誤被稱為異常。

示例:

>>> print(1 / 0)   # 0 不能作為除數,觸發異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> print(my_name)  # # my_name 未定義,觸發異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name "my_name" is not defined
>>> print("5" + 5)  # # int 不能與 str 相加,觸發異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

不同的異常就會提示不同的錯誤信息,錯誤信息的前面部分顯示了異常發生的上下文,并以調用棧的形式顯示具體信息。

 

3、異常處理

Python腳本發生異常時我們沒有及時捕獲處理它,程序會終止執行。python中使用try/except語句就可以很好的來處理異常。

示例代碼:

try:
    print(my_name)  # 沒有定義my_nama變量,就會發生異常
    print("我是正常執行的結果")  # 如果程序正常就會執行此代碼
except NameError:
    print("如果發生異常,就會執行我")  # 如果發生錯誤就會執行此段代碼

執行流程: 

Python常遇到的錯誤和異常

Python常遇到的錯誤和異常

Python常遇到的錯誤和異常

執行執行 try 子句(在關鍵字 try 和關鍵字 except 之間的語句)
沒有找到變量,引發NameError錯誤
異常類型正好和except后面的語句相符合,應的 except 子句將被執行

注意:如果異常與之不符合,還是會拋出異常

如果想要一個except子句可以同時處理多個異常,這些異常將被放在一個括號里成為一個元組,

例如:

try:
    pass
except (RuntimeError, TypeError, NameError):
    pass

一個try語句也可以包含多個except子句,分別來處理不同的特定的異常。最多只有一個分支會被執行。

最后一個except子句可以忽略異常的名稱,它將被當作通配符使用。可以通過raise將異常拋出

示例代碼;

while True:
    try:
        a = int(input("請輸入被除數:"))
        b = int(input("請輸入被除數:"))
        c = a / b
        print("結果為:", c)
        break  # 跳出循環
    except ValueError:
        print("輸入的不是一個數字,請重新輸入")
    except:
        print("未知異常")
        raise  # 如果不是ValueError,會打印上一條語句并拋出異常

執行流程:

Python常遇到的錯誤和異常

 

4、try/except...else

try/except 語句還有一個可選的 else 子句,想要使用這個子句,就必須放在所有的 except 子句之后。

else 子句將在 try 子句沒有發生任何異常的時候執行。

執行流程:

 

示例代碼:

while True:
    try:
        a = int(input("請輸入被除數:"))
        b = int(input("請輸入被除數:"))
    except ValueError:
        print("輸入的不是一個數字,請重新輸入")
    except ZeroDivisionError:
        print("被除數為0")
    else:
        c = a / b
        print("結果為:", c)
        print("計算完畢")
        break

這里出現了一個小問題,如果在一個死循環的語句中,try中有break關鍵字,就不會執行else語句

使用 else 子句比把所有的語句都放在 try 子句里面要好,這樣可以避免一些意想不到,而 except 又無法捕獲的異常。

 

5、try-finally 語句

try-finally 語句無論是否發生異常都將執行最后的代碼。

while True:
    try:
        a = int(input("請輸入被除數:"))
        b = int(input("請輸入被除數:"))
    except ValueError:
        print("輸入的不是一個數字,請重新輸入")
    except ZeroDivisionError:
        print("被除數為0")
    else:
        c = a / b
        print("結果為:", c)
        print("計算完畢")
        break
    finally:
        print("程序執行完畢")  # 這句話,無論異常是否發生都會執行

 

6、拋出異常

Python 使用 raise 語句拋出一個指定的異常

語法結構:

raise [Exception [, args [, traceback]]]

Exception是異常的類型(例如,NameError)參數標準異常中任一種

args 是自已提供的異常參數(可選)。

tracebackargs 是跟蹤異常對象(可選)。

示例代碼:

x = int(input())  # 獲取一個數字
if x == 0:
    # 如果等于0就拋出Exception異常 
    raise Exception("x等于0。")  # Exception: x等于0。

之前的代碼有個bug,被除數為0時就直接拋出異常,一個通過這種方法解決

while True:
    try:
        a = int(input("請輸入被除數:"))
        b = int(input("請輸入被除數:"))
        if b == 0:
            raise ZeroDivisionError("被除數等于0。")
    except ValueError as e:  # 將異常信息傳遞給e
        print(e)  # 將異常信息打印出來
        print("輸入的不是一個數字,請重新輸入")
    except ZeroDivisionError:
        print("被除數為0")
    else:
        c = a / b
        print("結果為:", c)
        print("計算完畢")
        break
    finally:
        print("程序執行完畢")  # 這句話,無論異常是否發生都會執行

dxcept...as...可以將異常信息傳遞出來

 

7、用戶自定義異常

可以通過創建一個新的異常類來擁有自己的異常。異常類繼承自 Exception 類,可以直接繼承,或者間接繼承

示例代碼:

# 自定義一個異常類
class MyError(Exception):  # 異常類繼承自 Exception 類
    """
    自己定義的一個異常類
    """

    def __init__(self, message):
        self.message = message


raise MyError("自己定義的一個異常類")

到此這篇關于Python常遇到的錯誤和異常的文章就介紹到這了,更多相關Python錯誤和異常內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/7024645424577249287

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久久亚洲 | 99看片网 | 中文字幕久久精品 | 亚洲综合av一区 | 欧美日韩不卡合集视频 | jlzzjlzz国产精品久久 | 欧美精品一区二区三区在线播放 | 亚洲 综合 清纯 丝袜 自拍 | 国产精品高清一区二区 | 亚色在线| 成人免费一区二区三区视频软件 | 亚洲综合色网 | 国产一区视频网站 | 国产精品亚洲第一区 | 自拍视频网站 | 日韩精品成人 | 国产精品久久久久久久9999 | 精品久久久久久国产 | 亚洲精品一区二区三区蜜桃下载 | 国产精品美女久久久久久久久久久 | 欧美日韩在线电影 | 久久9国产偷伦 | 日韩av电影在线免费观看 | 成人免费影院 | 国产精品美女视频 | 精品美女 | 亚洲国产aⅴ成人精品无吗 久久久91 | 午夜视频免费 | 欧美一级在线观看 | 成人在线网站 | 国产一区亚洲 | 久久久国产精品免费 | 欧美精品在线观看 | 午夜在线 | 在线观看亚洲专区 | 狠狠ri| 亚洲综合自拍 | 久久久美女 | 综合在线视频 | 亚洲精品片 | 国产精品久久久久久久久久免费看 |