国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

Python異常原理及異常捕捉實現過程解析

瀏覽:14日期:2022-08-01 10:39:57

關于選課程序,最近著實有點忙,沒機會復習os、pickle兩部分模塊,所以數據儲存和字典讀取成為了一個問題,大致原理知道,但是具體操作可能還是得返回去再好好看看,所以目前就提前開始學習新的知識了,雖然今天感覺str的相關方法忘的是干干凈凈的,但是我有pycharm。

今天主要內容是關于異常,其實有點想最開始剛學的感覺,比較簡單。

異常就是程序運行時發生錯誤的信號(在程序出現錯誤時,則會產生一個異常,若程序沒有處理它,則會拋出該異常,程序的運行也隨之終止),在python中,錯誤觸發的異常如下:

Python異常原理及異常捕捉實現過程解析

錯誤被分為了兩種:

1.語法錯誤,基本pycharm都會幫你顯示出來,不該犯的

2.邏輯錯誤,不太容易看出來,pycharm也不管,只有Python解釋器是真愛,但是也得等到真的運行的時候

#TypeError:int類型不可迭代for i in 3: pass#ValueErrornum=input('>>: ') #輸入helloint(num)#NameErroraaa#IndexErrorl=[’egon’,’aa’]l[3]#KeyErrordic={’name’:’egon’}dic[’age’]#AttributeErrorclass Foo:passFoo.x#ZeroDivisionError:無法完成計算res1=1/0res2=1+’str’

下面是今天最為重要的部分:

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

AttributeError 試圖訪問一個對象沒有的樹形,比如foo.x,但是foo沒有屬性xIOError 輸入/輸出異常;基本上是無法打開文件ImportError 無法引入模塊或包;基本上是路徑問題或名稱錯誤IndentationError 語法錯誤(的子類) ;代碼沒有正確對齊IndexError 下標索引超出序列邊界,比如當x只有三個元素,卻試圖訪問x[5]KeyError 試圖訪問字典里不存在的鍵KeyboardInterrupt Ctrl+C被按下NameError 使用一個還未被賦予對象的變量SyntaxError Python代碼非法,代碼不能編譯(個人認為這是語法錯誤,寫錯了)TypeError 傳入對象類型與要求的不符合UnboundLocalError 試圖訪問一個還未被設置的局部變量,基本上是由于另有一個同名的全局變量,導致你以為正在訪問它ValueError 傳入一個調用者不期望的值,即使值的類型是正確的

更多異常(有空還是要挨個錯一遍):

ArithmeticErrorAssertionErrorAttributeErrorBaseExceptionBufferErrorBytesWarningDeprecationWarningEnvironmentErrorEOFErrorExceptionFloatingPointErrorFutureWarningGeneratorExitImportErrorImportWarningIndentationErrorIndexErrorIOErrorKeyboardInterruptKeyErrorLookupErrorMemoryErrorNameErrorNotImplementedErrorOSErrorOverflowErrorPendingDeprecationWarningReferenceErrorRuntimeErrorRuntimeWarningStandardErrorStopIterationSyntaxErrorSyntaxWarningSystemErrorSystemExitTabErrorTypeErrorUnboundLocalErrorUnicodeDecodeErrorUnicodeEncodeErrorUnicodeErrorUnicodeTranslateErrorUnicodeWarningUserWarningValueErrorWarningZeroDivisionError

為了保證程序的健壯性與容錯性,即在遇到錯誤時程序不會崩潰,我們需要對異常進行處理,

如果錯誤發生的條件是可預知的,我們需要用if進行處理:在錯誤發生之前進行預防

之前也是有操作過的:

AGE=10while True: age=input(’>>: ’).strip() if age.isdigit(): #只有在age為字符串形式的整數時,下列代碼才不會出錯,該條件是可預知的 age=int(age) if age == AGE: print(’you got it’) break

如果錯誤發生的條件是不可預知的,則需要用到try...except:在錯誤發生之后進行處理

#基本語法為try: 被檢測的代碼塊except 異常類型: try中一旦檢測到異常,就執行這個位置的邏輯#舉例try: f=open(’a.txt’) g=(line.strip() for line in f) print(next(g)) print(next(g)) print(next(g)) print(next(g)) print(next(g))except StopIteration: f.close()

#1 異常類只能用來處理指定的異常情況,如果非指定異常則無法處理。s1 = ’hello’try: int(s1)except IndexError as e: # 未捕獲到異常,程序直接報錯 print e#2 多分支s1 = ’hello’try: int(s1)except IndexError as e: print(e)except KeyError as e: print(e)except ValueError as e: print(e)#3 萬能異常Exceptions1 = ’hello’try: int(s1)except Exception as e: print(e)#4 多分支異常與萬能異常#4.1 如果你想要的效果是,無論出現什么異常,我們統一丟棄,或者使用同一段代碼邏輯去處理他們,那么騷年,大膽的去做吧,只有一個Exception就足夠了。#4.2 如果你想要的效果是,對于不同的異常我們需要定制不同的處理邏輯,那就需要用到多分支了。#5 也可以在多分支后來一個Exceptions1 = ’hello’try: int(s1)except IndexError as e: print(e)except KeyError as e: print(e)except ValueError as e: print(e)except Exception as e: print(e)#6 異常的其他機構s1 = ’hello’try: int(s1)except IndexError as e: print(e)except KeyError as e: print(e)except ValueError as e: print(e)#except Exception as e:# print(e)else: print(’try內代碼塊沒有異常則執行我’)finally: print(’無論異常與否,都會執行該模塊,通常是進行清理工作’)#7 主動觸發異常try: raise TypeError(’類型錯誤’)except Exception as e: print(e)#8 自定義異常class EgonException(BaseException): def __init__(self,msg): self.msg=msg def __str__(self): return self.msgtry: raise EgonException(’類型錯誤’)except EgonException as e: print(e)#9 斷言:assert 條件assert 1 == 1 assert 1 == 2#10 總結try..except

異常捕捉的優勢:

1:把錯誤處理和真正的工作分開來

2:代碼更易組織,更清晰,復雜的工作任務更容易實現;

3:毫無疑問,更安全了,不至于由于一些小的疏忽而使程序意外崩潰了;

主要是理論知識,后期使用才是關鍵,就像我要復習的pickle和os模塊一樣,就是這些了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 不卡一区在线观看 | 九九99香蕉在线视频网站 | 国产亚洲一区在线 | 国产免费一级在线观看 | 欧美激情 自拍 | 欧美成人交tv免费观看 | 99久久久精品免费观看国产 | 日韩一级黄色毛片 | 黄色不卡视频 | 久久免费视频7 | 看一级特黄a大片国产 | 日本一级毛片中文字幕 | 91成人爽a毛片一区二区 | 精品国产免费一区二区三区 | 亚洲视频在线观看地址 | 高清精品一区二区三区一区 | 国产在亚洲线视频观看 | 91国偷自产一区二区三区 | 91香蕉国产亚洲一区二区三区 | 亚洲精品综合一区二区三区在线 | 欧美日韩一区二区不卡三区 | 成人在线观看国产 | 午夜在线影院 | 日本欧美一区二区三区高清 | 欧美性巨大欧美 | 亚洲欧美一区二区三区国产精品 | 亚洲一区二区三区四区五区六区 | 久草免费在线播放视频 | 欧美手机手机在线视频一区 | 精品视频一区在线观看 | 精品一区二区三区在线视频 | 亚洲人成网址在线观看 | 大尺度福利视频在线观看网址 | 久久这里只有精品免费播放 | 中文字幕一区二区三区久久网站 | 欧美成人午夜做爰视频在线观看 | 亚洲欧美日韩综合久久久久 | 亚洲欧美综合国产精品一区 | 日韩国产欧美在线观看 | 特级淫片日本高清视频 | 国产网站精品 |