电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:18日期: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 編程
相關文章:
主站蜘蛛池模板: 合肥汽车充电桩_安徽充电桩_电动交流充电桩厂家_安徽科帝新能源科技有限公司 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 布袋除尘器-单机除尘器-脉冲除尘器-泊头市兴天环保设备有限公司 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 成都竞价托管_抖音代运营_网站建设_成都SEM外包-成都智网创联网络科技有限公司 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | 岸电电源-60HZ变频电源-大功率变频电源-济南诚雅电子科技有限公司 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 东莞猎头公司_深圳猎头公司_广州猎头公司-广东万诚猎头提供企业中高端人才招聘服务 | 通风气楼_通风天窗_屋顶风机-山东美创通风设备有限公司 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 合金耐磨锤头_破碎机锤头_郑州市德勤建材有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 密封无忧网 _ 专业的密封产品行业信息网 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 贵州成人高考网_贵州成考网 | 塑胶跑道施工-硅pu篮球场施工-塑胶网球场建造-丙烯酸球场材料厂家-奥茵 | 作文导航网_作文之家_满分作文_优秀作文_作文大全_作文素材_最新作文分享发布平台 | 净气型药品柜-试剂柜-无管道净气型通风柜-苏州毕恩思 | 渗透仪-直剪仪-三轴仪|苏州昱创百科 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 解放卡车|出口|济南重汽|报价大全|山东三维商贸有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | Dataforth隔离信号调理模块-信号放大模块-加速度振动传感器-北京康泰电子有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 杭州公司变更法人-代理记账收费价格-公司注销代办_杭州福道财务管理咨询有限公司 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 行吊_电动单梁起重机_双梁起重机_合肥起重机_厂家_合肥市神雕起重机械有限公司 | 发电机组|柴油发电机组-批发,上柴,玉柴,潍柴,康明斯柴油发电机厂家直销 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 焊接减速机箱体,减速机箱体加工-淄博博山泽坤机械厂 | 宝鸡市人民医院 | 蓄电池回收,ups电池后备电源回收,铅酸蓄电池回收,机房电源回收-广州益夫铅酸电池回收公司 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 不发火防静电金属骨料_无机磨石_水泥自流平_修补砂浆厂家「圣威特」 |