python 錯誤與異常

2021-07-23 20:35:42 字數 3736 閱讀 3895

錯誤在執行前修改,邏輯錯誤無法修改

執行時,異常產生,檢查到錯誤且直譯器認為是異常,丟擲異常

異常處理,截獲異常,忽略或者終止程式處理異常

try:

try_suite

except exception [e]:

exception_block

try:

aexcept nameerror,e:

print

"catch error:",e

except: #捕獲所有的異常

print

舉個栗子:

猜數字遊戲

import random

num=random.randint(0,100)

while

true:

guess=int(raw_input('enter 1~100:'))

if guess>num:

print

"guess bigger:",guess

elif guessprint

else:

print

"ok"

break

print

"\n"

當我輸入50d的時候就會丟擲異常,終止了程式,我想讓程式有丟擲異常,又不終止程式(增加程式的健壯性)

import random

num=random.randint(0,100)

while

true:

try:

guess=int(raw_input('enter 1~100:'))

except valueerror,e:

print

"enter 1~100:"

if guess>num:

print

"guess bigger:",guess

elif guessprint

else:

print

"ok"

break

print

"\n"

python

try:

try_suite

except exception1 [e]:

block1

except exception2 [e]:

block2

except exceptionn [e]:

blockn

try:

try_suite

except exception1 [e]:

block1

else:

none_exception

當沒有捕獲到異常的時候會繼續執行else中的**

try:

try_suite

finally:

do_finally

try:

f=open('a.txt')

print int(f.read())

finally:

print

"file close"

f.close()

多應用有開啟某檔案或者資源在關閉的時候,使用該語句

try:

try_suite

except exception1 [e]:

block1

else:

none_exception

finally:

do_finally

with context[as var]:

with_suite

舉個栗子

with open('a.txt') as f:

for line in f.readlines():

print line

在有異常的時候,還能保證關閉檔案

with語句實質時上下文管理:

寫乙個可以執行with 上下文管理器的類

class

mycontex

(object)

def__init__

(self,name):

self.name=name

def__enter__

(self):

print

"__enter__"

return self

defdo_self

(self):

print

"do_self"

def__exit__

(self,exc_type,exc_value,traceback):

print

"__exit__"

print

"error:",exc_type,"info:","exc_value"

if __name__=='__main__'

with mycontex('test context') as f:

print f.name

f.do_self()

output:

__enter__

test context

do_self

__exit__

error:none info:none

raise語句用於主動丟擲異常

syntax:raise[exception[,args]]

raise typeerror, 「test typeerror」

output:

typeerror: test typeerror

用於檢查表示式是否為真,如果為假,就會引發乙個assertionerror錯誤

syntax: assert expression [,args]

`assert 0, 『test assert』

syntax:class fileerror(ioerror)

​ pass

產生自定義異常:assert fileerror,」file error」

class

customerror

(exception):

def__init__

(self,info):

exception.__init__(self)

self.errorinfo = info

print id(self) #看這個物件的id

def__str__

(self):

return

"custionerror:%s"% self.errorinfo

try:

raise customerror("test customerror")

except customerror,e:

print

"errorinfo:%d,%s"%(id(e),e)

output:

errorinfo:139918882121840,custionerror:test customerror
慕課網學習notes

python 錯誤與異常

開發人員在編寫程式的時候難免會遇到錯誤,那遇到錯誤要如何找到錯誤並處理異常呢?本篇主要實現異常的處理方法。一 錯誤分類 1.語法錯誤 syntaxerror 2.執行時錯誤 這種包括很多異常的型別,eg nameerror zerodivisionerror等 二 異常處理的基本語法 try 執行 ...

Python 錯誤與異常處理

python 有兩種錯誤型別 1 語法錯誤 syntax errors 2 異常 exceptions 語法錯誤就不說了 關於異常處理 用try except 首先try 和 except 之間的 首先被執行,如果沒有異常,則except語句將會被忽略,如果出現異常,則try下的語句將會被忽略,直接...

python異常與錯誤學習

1 異常簡介 看如下示例 print test begin f open 123.txt r 用唯讀模式開啟乙個不存在的檔案,會報錯 開啟乙個不存在的檔案123.txt,當找不到123.txt 檔案時,就會丟擲給我們乙個ioerror型別的錯 誤,no such le or directory 12...