高見龍

iOS app/Ruby/Rails Developer & Instructor, 喜愛非主流的新玩具 :)

例外處理

世事多變化,總是會有萬一..

當程式出錯的時候,你可以選擇就讓它壞掉不理它,或是選擇做一些例外處理:

try..except

>>> print b
Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined

因為因為沒有定義b這個變數,所以它會拋出一個NameError的錯誤訊息,使用例外處理可以來捕捉並處理它:

1
2
3
4
try:
  print b
except NameError, e:
  print "there is no b"

finally 不管如何一定會執行

1
2
3
4
5
6
try:
  print b
except NameError, e:
  print "there is no b"
finally:
  print "no matter what happened.."

else

如果try區塊內沒有發生例外,則else區塊就會執行:

1
2
3
4
5
6
7
b = "bbb"
try:
  print b
except NameError, e:
  print "there is no b"
else:
  print "there is no error"

raise

主動拋出例外

>>> raise NameError

Comments