目次
- 1 1. Pangkalahatang-ideya ng Exception Handling sa Python
- 2 2. try-except na pahayag?
- 3 3. Mga Karaniwang Exception at ang Kanilang Pamamaraan ng Paghawak
- 4 4. Pagkuha ng Detalye ng Error Gamit ang Exception Object
- 5 5. Paggamit ng finally block
- 6 6. Manwal na pag-trigger ng mga exception gamit ang raise
- 7 7. Mga pinakamahusay na kasanayan sa paghawak ng mga exception sa Python
1. Pangkalahatang-ideya ng Exception Handling sa Python
Ano ang exception handling sa Python?
May mangyari ang hindi inaasahang mga error habang tumatakbo ang programa. Tinatawag ito na “exception”, at kapag naganap ang exception, karaniwang humihinto ang programa. Sa Python, mayroong exception handling upang pangasiwaan ang ganitong mga exception. Sa pamamagitan ng paggamit ng exception handling, maaaring harapin ng programa ang mga error nang maayos at ipagpatuloy ang pagtakbo.Bakit mahalaga ang exception handling?
Mahalaga ang exception handling upang ang programa ay magpatuloy na gumana sa isang paraan na madaling gamitin ng mga gumagamit kahit na ito ay makatagpo ng error. Bukod dito, sa pagtukoy ng sanhi ng error at pagpapadali ng pag-debug, makakalikha ka ng mas mapagkakatiwalaang programa.2. try-except
na pahayag?
Pangunahing syntax
Pythontry-except
na pahayag ay isinusulat ang code na maaaring magdulot ng error sa loob ng try
block, at inilalagay ang pagproseso kapag nagkaroon ng error sa except
block. Narito ang pangunahing syntax:try:
# code na maaaring magdulot ng error
except SomeError:
# code na nagpoproseso ng error
try
block kapag ang code ay matagumpay na naipatupad, except
block ay hindi pinapansin, ngunit kapag nagkaroon ng error, isinasagawa ang angkop na pagproseso para sa tinukoy na exception.
Kung ang code sa loob ng try
block ay matagumpay na naipatupad, ang except
block ay hindi pinapansin, ngunit kapag nagkaroon ng error, isinasagawa ang angkop na pagproseso para sa tinukoy na exception.Karaniwang halimbawa: Zero Division Error
Kapag sinusubukang mag-divide ng zero,ZeroDivisionError
ay nagaganap. Maaaring iproseso ang error na ito sa sumusunod na paraan:
Kapag sinubukang mag-divide zero, nagkakaroon ng ZeroDivisionError
. Maaaring iproseso ang error na ito tulad ng sumusunod:try:
result = 10 / 0
except ZeroDivisionError:
print("Hindi maaaring mag-divide ng zero")

3. Mga Karaniwang Exception at ang Kanilang Pamamaraan ng Paghawak
1. ZeroDivisionError
Ang exception na ito ay nangyayari kapag sinubukang mag-divide ng zero. Halimbawa, kapag sinubukang hatiin ang isang numero sa 0, awtomatikong itatapon ng Python ang ZeroDivisionError
.try:
result = 10 / 0
except ZeroDivisionError:
print("Hindi maaaring hatiin sa zero")
2. ValueError
ValueError
ay nangyayari kapag ang isang hindi angkop na halaga ay ipinasa sa isang function o operasyon. Sa sumusunod na halimbawa, sinusubukang i-convert ang isang string na hindi maaaring gawing numero gamit ang int()
.try:
num = int("not_a_number")
except ValueError:
print("Hindi wastong halaga")
3. Paraan ng Paghawak ng Maramihang Exception
Kung nais mong mag-handle ng maraming exception nang sabay-sabay, maaaring pagsamahin ang mga ito sa isangexcept
na pahayag:try:
result = 10 / "string"
except (ZeroDivisionError, TypeError):
print("May naganap na error")
4. Pagkuha ng Detalye ng Error Gamit ang Exception Object
Pagkuha ng Exception Object Gamit ang as
Sa except
na pahayag, maaaring gamitin ang keyword na as
upang makuha ang exception object. Sa ganitong paraan, maaaring tingnan ang detalyadong impormasyon ng error o i-log ito.try:
a = 10 / 0
except ZeroDivisionError as e:
print(f"Naganap ang error: {e}")
Sa code na ito, kapag naganap ang ZeroDivisionError
, ang mensahe ng error ay naka-imbak sa variable na e
, at maaari mong ipakita ang mga detalye nito.5. Paggamit ng finally
block
Ano ang finally
?
Ang finally
block ay ginagamit upang isulat ang code na palaging isasagawa, kahit na may maganap na exception. Angkop ito para sa mga operasyon na kailangang gawin palagi, tulad ng pagbubukas ng file o paglilinis ng koneksyon sa database.try:
file = open("test.txt", "r")
except FileNotFoundError:
print("Hindi mahanap ang file")
finally:
print("Natapos na ang pagproseso ng file")
Paglilinis ng mga Resource
Angfinally
ay kapaki-pakinabang kapag kailangang siguraduhing palaging pakawalan ang mga resource sa dulo ng programa. Halimbawa, ginagamit ang finally
upang matiyak na laging maisasara ang file tulad ng nasa ibaba.try:
file = open("data.txt", "r")
# Operasyon sa file
finally:
file.close()
Sa ganitong paraan, gamit ang finally
block, matitiyak na ang file ay palaging maisasara.6. Manwal na pag-trigger ng mga exception gamit ang raise
Gampanin ng raise
Sa paggamit ng pahayag na raise
, maaaring sadyang magpasimula ng exception ang developer. Dahil dito, maaaring hayagang itapon ang error batay sa pagsusuri ng input o mga kondisyon.def check_value(value):
if value < 0:
raise ValueError("Hindi pinapayagan ang negatibong halaga")
Halimbawa ng custom na exception
Sa pamamagitan ng pag-throw ng error para sa mga tiyak na kondisyon, maaaring maiwasan nang maaga ang hindi wastong input. Dahil dito, posible na maiwasan ang hindi inaasahang pag-uugali.7. Mga pinakamahusay na kasanayan sa paghawak ng mga exception sa Python
1. Iwasan ang labis na paghawak ng mga exception
Kapag labis na gagamitin ang paghawak ng mga exception, bumababa ang nababasa ng code at nagiging mahirap ang pag-debug. Dapat gamitin ang paghawak ng mga exception lamang sa mga bahagi na mataas ang posibilidad na magka-error, at huwag isama ito sa karaniwang daloy ng programa.2. Gamitin ang log upang itala ang mga error
Kapag naganap ang isang exception, mahalagang i-log ang mensahe ng error. Sa ganitong paraan, maaaring subaybayan ang sanhi ng error mamaya. Narito ang isang halimbawa gamit ang module nalogging
.import logging
try:
a = 10 / 0
except ZeroDivisionError as e:
logging.error(f"Naganap ang error: {e}")
3. Iwasan ang malawak na paggamit ng except
Sa paghawak ng mga exception, inirerekomenda na hulihin ang mga tiyak na error hangga’t maaari. Ang paggamit ng malawak na except Exception
ay maaaring magpalampas ng mga detalye ng problema, kaya mas mainam na tugunan ang bawat partikular na error nang hiwalay.