日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...

發布時間:2025/3/20 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從0基礎學習Python (Day19)

面向對象開發過程中的=>異常

什么是異常

? 當程序在運行過程中出現的一些錯誤,或者語法邏輯出現問題,解釋器此時無法繼續正常執行了,反而出現了一些錯誤的提示,這就是異常(錯誤代碼或者BUG)

程序出現異常的后果

? 程序在運行過程中出現了異常

? 輕則功能無法實現,或者功能運行結果出錯

? 重則整個程序崩潰!!!!!

捕獲異常

? 捕獲異常是在編程中常用的一種處理代碼中可能會出現漏洞的一些基礎解決方案

捕獲異常的方法

使用try—except語法

try:

#可能會出現異常的代碼

except:

#如果try里面的哪行代碼出現異常會直接跳到這里面執行代碼

? ·這種捕獲異常存在一個問題,只會捕獲異常然后執行except中的處理代碼,但是無法得知異常的問題

捕獲指定異常

例:

print(a)

#執行會拋異常

#SyntaxError: invalid character in identifier

#在“:”之前叫異常類,之后叫異常信息

語法

try:

#可能會出現異常的代碼

except 可能出現的異常類型:

#如果捕獲到異常是指定的這個類型的執行代碼

? 在使用捕獲指定異常的時候一定要考慮所有有可能出現的異常類型,如果出現的異常不在所寫出的“可能出現的異常類”之中,則會報錯

注意

如果執行的代碼的異常類型和要捕獲的異常類型不一致則無法捕獲異常

一般try下面只放一行嘗試的代碼

捕獲多個指定異常

? 當在捕獲異常的時候,可以把要捕獲的異常類型的名字,放到except之后,并使用元祖的方式進行體現,或者采用多個except之后放上不同的異常類型的名字

異常類

? 異常類是指在Python內置的一些類,這些類代表了Python中的一些異常問題

異常名稱

描述

BaseException

所有異常的基類

SystemExit

解釋器請求退出

KeyboardInterrupt

用戶中斷執行(通常是輸入^C)

Exception

常規錯誤的基類

StopIteration

迭代器沒有更多的值

GeneratorExit

生成器(generator)發生異常來通知退出

SystemExit

Python 解釋器請求退出

StandardError

所有的內建標準異常的基類

ArithmeticError

所有數值計算錯誤的基類

FloatingPointError

浮點計算錯誤

OverflowError

數值運算超出最大限制

ZeroDivisionError

除(或取模)零 (所有數據類型)

AssertionError

斷言語句失敗

AttributeError

對象沒有這個屬性

EOFError

沒有內建輸入,到達EOF 標記

EnvironmentError

操作系統錯誤的基類

IOError

輸入/輸出操作失敗

OSError

操作系統錯誤

WindowsError

系統調用失敗

ImportError

導入模塊/對象失敗

KeyboardInterrupt

用戶中斷執行(通常是輸入^C)

LookupError

無效數據查詢的基類

IndexError

序列中沒有沒有此索引(index)

KeyError

映射中沒有這個鍵

MemoryError

內存溢出錯誤(對于Python 解釋器不是致命的)

NameError

未聲明/初始化對象 (沒有屬性)

UnboundLocalError

訪問未初始化的本地變量

ReferenceError

弱引用(Weak reference)試圖訪問已經垃圾回收了的對象

RuntimeError

一般的運行時錯誤

NotImplementedError

尚未實現的方法

SyntaxError

Python 語法錯誤

IndentationError

縮進錯誤

TabError

Tab 和空格混用

SystemError

一般的解釋器系統錯誤

TypeError

對類型無效的操作

ValueError

傳入無效的參數

UnicodeError

Unicode 相關的錯誤

UnicodeDecodeError

Unicode 解碼時的錯誤

UnicodeEncodeError

Unicode 編碼時錯誤

UnicodeTranslateError

Unicode 轉換時錯誤

Warning

警告的基類

DeprecationWarning

關于被棄用的特征的警告

FutureWarning

關于構造將來語義會有改變的警告

OverflowWarning

舊的關于自動提升為長整型(long)的警告

PendingDeprecationWarning

關于特性將會被廢棄的警告

RuntimeWarning

可疑的運行時行為(runtime behavior)的警告

SyntaxWarning

可疑的語法的警告

UserWarning

用戶代碼生成的警告

捕獲異常描述信息

語法

try:

#可能會出現異常的代碼

except (指定的異常類型1,指定的異常類型2,...) as 變量:

print(變量)

? 將捕獲的區域中的代碼出現的指定的異常問題的描述信息存放在變量中,然后輸出

捕獲所有異常

? 所有異常類的父類都是Exception類

語法

try:

#可能會出現異常的代碼

except Exception as 變量:

print(變量)

異常的else

? else表示的是如果沒有捕獲到異常則需要執行的代碼

語法

try:

#可能會出現異常的代碼

except (可能出現的異常類型1,可能出現的異常類型2)as 變量:

#如果捕獲到異常是指定的這個類型的執行代碼

print(變量)

else:

#如果沒有捕獲到異常則需要執行的代碼

異常的finnally

? finnally表示最終結果,不論代碼是否捕獲到異常(try中的代碼執行之后不管是進入了except還是else)最終都要進入finnally執行

語法

try:

#可能會出現異常的代碼

except (可能出現的異常類型1,可能出現的異常類型2)as 變量:

#如果捕獲到異常是指定的這個類型的執行代碼

print(變量)

else:

#如果沒有捕獲到異常則需要執行的代碼

finnally:

#不論有無bug都執行這一行

異常的傳遞

? 可以理解為異常的嵌套:

# 計算1+100

import time

# 程序的時間線

def fun():

try:

res = 0

print("1"+2)

print(time.time())

# 0.0168831

try:

for i in range(1, 101):

res += i

print(res)

time

time.sleep(2)

except:

print("程序被意外終止1")

except:

print("程序被意外終止2")

finally:

print(time.time())

# 0.0178795

return res

print( fun())

自定義異常

? 在python中一般拋出的異常的語法是異常類對象,這些異常類對象是Python提前封裝好的

語法

try:

raise

#用來引發異常,讓執行except中的語句

except Exception as res:

#捕獲到自定義異常執行代碼

else:

#如果沒有捕獲到異常則需要執行的代碼

finnally:

#不論有無bug都執行這一行

? 需求:檢測一些數據例如年齡不能小于0(小于0拋異常)

class AgeInputError(Exception):

def __init__(self, age):

self.age = age

self.minage = 0

def __str__(self):

return f"你輸入的年齡是{self.age},不能小于{self.minage}"

def main():

try:

age = int(input("請輸入年齡:"))

if age < 0:

# raise 關鍵字是返回一個異常

raise AgeInputError(age)

except Exception as res:

print(res)

else:

print("年齡無誤")

finally:

print("注冊完成")

main()

注意:

? python中的raise關鍵字用于引發一個異常,基本上作用和C#中或Java中的throw關鍵字相同

Day19-------END

總結

以上是生活随笔為你收集整理的python 内存溢出能捕获吗_从0基础学习Python (19)[面向对象开发过程中的异常(捕获异常~相关)]...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。