python能解決什么問題,python異常如何處理_python異常處理

 2023-12-06 阅读 22 评论 0

摘要:異常處理異常和錯誤程序中錯誤分類1.語法錯誤(程序執行前改正)2.邏輯錯誤python能解決什么問題?什么是異常?異常就是程序運行時發生錯誤的信號python中常見的異常種類在python中不同的異常可以用不同的類型(python中統一了類與類型,類型即類)去標識,不同

異常處理

異常和錯誤

程序中錯誤分類

1.語法錯誤(程序執行前改正)

2.邏輯錯誤

python能解決什么問題?什么是異常?

異常就是程序運行時發生錯誤的信號

python中常見的異常種類

在python中不同的異常可以用不同的類型(python中統一了類與類型,類型即類)去標識,不同的類對象標識不同的異常,一個異常標識一種錯誤。

AttributeError # 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性x

IOError # 輸入/輸出異常;基本上是無法打開文件

python socket編程、ImportError # 無法引入模塊或包;基本上是路徑問題或名稱錯誤

IndentationError # 語法錯誤(的子類) ;代碼沒有正確對齊

IndexError # 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]

KeyError # 試圖訪問字典里不存在的鍵

KeyboardInterrupt # Ctrl+C被按下

NameError # 使用一個還未被賦予對象的變量

python異常類型?SyntaxError # Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)

TypeError # 傳入對象類型與要求的不符合

UnboundLocalError # 試圖訪問一個還未被設置的局部變量,基本上是由于另有一個同名的全局變量,

導致你以為正在訪問它

ValueError # 傳入一個調用者不期望的值,即使值的類型是正確的

ArithmeticError

python異常拋出?AssertionError

AttributeError

BaseException

BufferError

BytesWarning

DeprecationWarning

python異常?EnvironmentError

EOFError

Exception

FloatingPointError

FutureWarning

GeneratorExit

python eoferror?ImportError

ImportWarning

IndentationError

IndexError

IOError

KeyboardInterrupt

python異常處理的作用?KeyError

LookupError

MemoryError

NameError

NotImplementedError

OSError

python java、OverflowError

PendingDeprecationWarning

ReferenceError

RuntimeError

RuntimeWarning

StandardError

python異常處理,StopIteration

SyntaxError

SyntaxWarning

SystemError

SystemExit

TabError

python拋出異常繼續執行。TypeError

UnboundLocalError

UnicodeDecodeError

UnicodeEncodeError

UnicodeError

UnicodeTranslateError

python中的異常處理、UnicodeWarning

UserWarning

ValueError

Warning

ZeroDivisionError

異常處理

python異常處理語句、什么是異常?

異常發生之后,異常之后的代碼就不執行了

什么是異常處理?

python解釋器檢測到錯誤,觸發異常(也允許程序員自己觸發異常)

程序員編寫特定的代碼,專門用來捕捉這個異常(這段代碼與程序邏輯無關,與異常處理有關)

如果捕捉成功則進入另外一個處理分支,執行你為其定制的邏輯,使程序不會崩潰,這就是異常處理

為什么要進行異常處理?

增強你程序的魯棒性與容錯性

如何進行異常處理?

這里指的異常由程序的錯誤引起的,語法上的錯誤跟異常處理無關,必須在程序運行前就修正

異常處理的兩種方式:

1.if判斷式

2.python專有異常處理

if判斷式

總結:

1.if判斷式的異常處理只能針對某一段代碼,對于不同的代碼段的相同類型的錯誤你需要寫重復的if來進行處理。

2.在你的程序中頻繁的寫與程序本身無關,與異常處理有關的if,會使得你的代碼可讀性極其的差

3.if是可以解決異常的,只是存在1,2的問題,所以,千萬不要妄下定論if不能用來異常處理。

python專有異常處理

python:為每一種異常定制了一個類型,然后提供了一種特定的語法結構用來進行異常處理

1.基本語法:

# 異常捕獲基本格式:

try:

被檢測的代碼塊

except 異常類型:

try中一旦檢測到異常,就執行這個位置的邏輯

f = open('1.txt')

g = (line.strip() for line in f)

try:

for i in g:

print(i)

except StopIteration:

f.close()

2.異常類只能用于處理指定的異常情況

s1 = 'hello'

try:

int(s1)

except IndexError as e:

print(e)

# 未捕獲到異常,程序直接報錯

3.處理多分支

s1 = 'hello'

try:

int(s1)

except IndexError as e:

print(e)

except KeyError as e:

print(e)

except ValueError as e:

print(e)

4.萬能異常:Exception

利用萬能異常定制不同邏輯:

def func():

print(111)

def func1():

print(222)

dic = {1:func,2:func1}

while True:

try:

user = int(input('請輸入數字:'))

dic[user]()

break

except ValueError:

print("請輸入數字")

except KeyError:

print("不在索引之內")

except Exception:

print("意外錯誤")

5.異常的其他機構

try else finally

try:

dic = {'name':"alex"}

print(dic['age'])

l1 = [1,2,3]

print(l1[100])

except KeyError:

print("沒有此鍵")

except IndexError:

print("沒有此下標")

else:

print("如果沒有出現異常則執行這里")

finally:

print('finally 666')

總結:

?1.except 必須依賴于try, else必須依賴于except和try

?2.finally只是依賴于try.

?3.finally : 在異常出現之前,執行finally語句(異常捕獲不算錯誤)

?4.finally 用在 關閉數據庫連接,文件句柄關閉,數據保存等,用到finally.

def func():

try:

print(111)

return 666

finally:

print(222)

print(func())

6.主動觸發異常

class A:

def func(self):

raise Exception("使用父類方法")

class B(A):

def func(self):

print("in B func")

class C(A):

def func(self):

print("in C func")

class D(A):

def func1(self):

print("in D func1")

def function(obj):

obj.func()

obj1 = D()

function(obj1)

# 結果:

Exception: 使用父類方法

try:

raise TypeError('類型錯誤')

except Exception as e:

print(e)

7.自定義異常

class EvaException(BaseException):

def __init__(self,msg):

self.msg = msg

def __str__(self):

return self.msg

try:

raise EvaException("類型錯誤")

except EvaException as e:

print(e)

8.斷言

斷言: 展現出一種強硬的態度,若條件不成立,立馬報錯,結束下面的執行語句

# assert 條件

assert 1 == 1

assert 1 == 2

9.try..except的方式比較if的方式的好處

?1.改善代碼容錯性

?2.增強程序魯棒性

10.萬能異常與多分支的比較

什么時候用萬能? 什么時候用多分支?

?如果你對錯誤信息不關心,只是想要排除錯誤讓程序繼續運行. 用萬能異常.

?你對錯誤信息要進行明確的分流,讓你的程序多元化開發.

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/189022.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息