這篇文章帶給大家的內容是關於python的錯誤與異常處理,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
一:語法錯誤syntax errors
熟悉語法!
二:異常
①列印錯誤訊息時,異常的類型會以異常的內建名稱顯示,並以呼叫堆疊的形式顯示具體訊息
②常見的異常:
NameError、
ZeropisionError、
# IndexError 索引超出序列範圍
KeyError 錯誤
AttributeError嘗試存取未知的物件屬性
三:異常處理
while True: try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again ")
try語句按照以下方式工作;
①首先,執行try子句(在關鍵字try和關鍵字except之間的語句)②如果沒有異常發生,忽略except子句,try子句執行後結束。
③如果在執行try子句的過程中發生了異常,那麼try子句餘下的部分將被忽略。
④如果異常的類型和 except 之後的名稱相符,那麼對應的except子句將被執行。最後執行 try 語句之後的程式碼。
⑤如果一個異常沒有與任何的except匹配,那麼這個異常將會傳遞給上層的try。
⑥一個 try 語句可能包含多個except子句,分別來處理不同的特定的例外。最多只有一個分支會被執行。
⑦一個except子句可以同時處理多個異常,這些異常將被放在一個括號裡成為一個元組。
except (RuntimeError, TypeError, NameError): pass
⑧最後一個except子句可以忽略異常的名稱,它將被當作通配符使用。你可以使用這種方法列印一個錯誤訊息,然後再次把異常拋出。
⑨try except 語句也有一個可選的else子句,如果使用這個子句,那麼必須放在所有的except子句之後。這個子句將在try子句沒有發生任何異常的時候執行.
三:拋出異常
raise 唯一的一個參數指定了要被拋出的異常。
它必須是一個異常的實例或是異常的類別(也就是Exception 的子類別)
四:使用者自訂例外
異常類別繼承自 Exception 類,可直接繼承,或間接繼承。
當創建一個模組有可能拋出多種不同的異常時, 一種通常的做法是為這個包建立一個基礎異常類,
五:定義清理行為
try: raise KeyboardInterrupt finanlly: print("dooo")不管try 子句裡面有沒有發生異常,finally 子句都會執行
如果一個異常在try 子句裡(或在except 和else 子句裡)被拋出,
而又沒有任何的except 把它截住,那麼這個異常會在finally 子句執行後再次被拋出
六:擴展------------->斷言機制
用途: 防禦性的程序
》# ---------------------------------------------------------------------# # 异常处理 # ---------------------------------------------------------------------# while True: try: x = int(input("Please enter a number: ")) break except ValueError: print("Oops! That was no valid number. Try again ") # ---------------------------------------------------------------------# # 抛出异常 # ---------------------------------------------------------------------# """ try: raise NameError('HiThere') except NameError: print('An exception flew by!') raise """ # ---------------------------------------------------------------------# # 用户自定义异常 # ---------------------------------------------------------------------# class MyError(Exception): # 继承自Exception def __init__(self, value): # 构造函数重写 self.value = value def __str__(self): return repr(self.value) try: raise MyError(2*2) # 抛出异常 except MyError as e: print('My exception occurred, value:', e.value) # 当创建一个模块有可能抛出多种不同的异常时, # 一种通常的做法是为这个包建立一个基础异常类, # 然后基于这个基础类为不同的错误情况创建不同的子类 class Error(Exception): """Base class for exceptions in this module.""" pass class InputError(Error): """Exception raised for errors in the input. Attributes: expression -- input expression in which the error occurred message -- explanation of the error """ def __init__(self, expression, message): self.expression = expression self.message = message class TransitionError(Error): """Raised when an operation attempts a state transition that's not allowed. Attributes: previous -- state at beginning of transition next -- attempted new state message -- explanation of why the specific transition is not allowed """ def __init__(self, previous, next1, message): self.previous = previous self.next = next1 self.message = message try: raise InputError(2*2, 45) # 抛出异常 except InputError: # 处理异常 print('My exception occurred') # ---------------------------------------------------------------------# # 定义清理行为 # ---------------------------------------------------------------------# def divide(x, y): try: result = x / y except ZeroDivisionError: print("division by zero!") else: # 没有异常的时执行 print("result is", result) finally: # 无论在任何情况下都会执行的清理行为 print("executing finally clause") # 一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出, # 而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出 # divide("2", "1") #从测试代码
以上是python的錯誤與異常處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和C 各有優勢,選擇應基於項目需求。 1)Python適合快速開發和數據處理,因其簡潔語法和動態類型。 2)C 適用於高性能和系統編程,因其靜態類型和手動內存管理。

選擇Python還是C 取決於項目需求:1)如果需要快速開發、數據處理和原型設計,選擇Python;2)如果需要高性能、低延遲和接近硬件的控制,選擇C 。

通過每天投入2小時的Python學習,可以有效提升編程技能。 1.學習新知識:閱讀文檔或觀看教程。 2.實踐:編寫代碼和完成練習。 3.複習:鞏固所學內容。 4.項目實踐:應用所學於實際項目中。這樣的結構化學習計劃能幫助你係統掌握Python並實現職業目標。

在兩小時內高效學習Python的方法包括:1.回顧基礎知識,確保熟悉Python的安裝和基本語法;2.理解Python的核心概念,如變量、列表、函數等;3.通過使用示例掌握基本和高級用法;4.學習常見錯誤與調試技巧;5.應用性能優化與最佳實踐,如使用列表推導式和遵循PEP8風格指南。

Python適合初學者和數據科學,C 適用於系統編程和遊戲開發。 1.Python簡潔易用,適用於數據科學和Web開發。 2.C 提供高性能和控制力,適用於遊戲開發和系統編程。選擇應基於項目需求和個人興趣。

Python更適合數據科學和快速開發,C 更適合高性能和系統編程。 1.Python語法簡潔,易於學習,適用於數據處理和科學計算。 2.C 語法複雜,但性能優越,常用於遊戲開發和系統編程。

每天投入兩小時學習Python是可行的。 1.學習新知識:用一小時學習新概念,如列表和字典。 2.實踐和練習:用一小時進行編程練習,如編寫小程序。通過合理規劃和堅持不懈,你可以在短時間內掌握Python的核心概念。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版
中文版,非常好用

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)