Paano Pangasiwaan ang Mga Pagbubukod sa Python

Paano Pangasiwaan ang Mga Pagbubukod sa Python

Ang pagbubukod sa paghawak ay ang iyong kakayahang ipasadya at ipakita ang mga mensahe ng error para sa mga bahagi ng iyong programa na nabigo na gumana.





Gumagawa ka man ng isang website, gumagawa ng isang API, isang module, o anumang iba pang produkto na gumagamit ng Python, ang iyong kakayahang mabisang hawakan ang mga pagbubukod ay hinahayaan kang malinaw na sabihin ang sanhi ng isang error.





Dito, titingnan namin kung paano mo mahawakan ang mga pagbubukod sa Python.





Paano gumagana ang Exception Handling sa Python

Kapag nagtataas ka ng mga pagbubukod, sinasabi mo kay Python na maglabas ng isang mensahe tuwing nabigo ang isang bloke ng code. Ang paghawak sa pagbubukod ay tulad ng pagsasabi sa isang tao na subukan at itaas ang isang timbang. At kung hindi nila magawa, dapat nila ipaalam sa iyo.

Gayunpaman, upang itaas ang isang pagbubukod sa Python, sasabihin mo sa Python na subukan at magpatakbo ng isang partikular na bloke ng code. Kung nabigo ang pag-block na iyon, maaari mong hilingin sa Python na itaas ang isang tinukoy na pagbubukod sa nabigong code.



Kailan Ka Dapat Gumamit ng Mga Pagbubukod sa Python Programming?

Sa karamihan ng mga okasyon, maaari mong i-mask ang karaniwang mga error sa Python gamit ang mga pagbubukod. Ngunit kailangan mong manatiling mapagbantay, dahil ang paggawa nito ay maaaring maging sanhi ng mga isyu sa pag-debug. Dahil dito, maaaring nahihirapan kang malaman ang ugat na sanhi ng isang panghuli na bug.

Samakatuwid, dapat kang gumamit ng mga pagbubukod kapag nasubukan mo nang sapat ang iyong code, at sigurado kang gagana ito. Sa huli, pinakamahusay na kasanayan na gamitin ang mga ito upang mahawakan ang mga potensyal na pagkakamali na maaaring lumabas mula sa pagtatapos ng gumagamit sa halip na ang code mismo.





Sa madaling salita, maaari mong gamitin ang mga pagbubukod bilang isang tool sa babala upang gabayan ang mga gumagamit sa kung paano gamitin ang iyong programa.

Paghawak ng Mga Exception ng Python

Upang mahawakan ang mga pagbubukod sa Python, kailangan mo munang balutin ang iyong code ng a subukan ... maliban harangan Paminsan-minsan, maaaring kailanganin mong isama ang a sa wakas pahayag upang hawakan ang karagdagang mga aksyon, depende sa iyong mga pangangailangan.





Ang konsepto ng pag-cod ng mga pagbubukod sa Python sa pangkalahatan ay ganito ang hitsura:

try:
'code to be executed'
except:
'error message'

Tulad ng nabanggit kanina, maaari mo ring gamitin sa wakas sa isang bloke ng pagbubukod. Ngunit ang code na isusulat mo sa loob ng a sa wakas ang sugnay ay malaya at tumatakbo kung mayroong isang pagbubukod o wala.

Sa esensya, madaling gamitin ito kung mayroon kang ibang bloke ng code na nais mong patakbuhin nang tuluy-tuloy anuman ang mangyari sa loob ng subukan ... maliban harangan

Narito ang isang halimbawa:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

Sa code sa itaas, mangyaring i-restart nagpapatakbo ng patuloy, hindi alintana kung mayroong isang pagbubukod o hindi.

Isang iba pa ang kalagayan ay maaari ding sumunod sa an maliban sa pahayag:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

Subukan muli ito sa pamamagitan ng tinukoy na 'B':

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

Ang mga halimbawa sa itaas ay hindi pamantayan sa mga pagbubukod. Ngunit maaari kang magkaroon ng isang mas malinaw na pagbubukod kapag pinagsama mo ang mga built-in (na tinukoy) na mga pagbubukod sa mga hindi pamantayan:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

Ang kataliwasan sa itaas ay sinusuri muna kung mayroong a PangalananError nasa subukan mo harangan Pagkatapos ay inililimbag nito ang pamantayan PangalananError pagbubukod muna (hindi tinukoy ang 'pangalan' B '). At sinusuportahan ito ng iyong nakasulat na pagbubukod ('Ang B ay kailangang tukuyin, mangyaring').

Kaugnay: Pangunahing Mga Prinsipyo sa Programming na Dapat Malaman ng bawat Programmer

hindi ko alam kung anong i-google

At kung nais mong hawakan ang isang kadena ng mga pagbubukod, maaari mo ring samahan ang a subukan mo harangan ang marami maliban sa pahayag. Ito ay medyo madaling gamiting kung ang iyong subukan mo ang block ay may potensyal na magkaroon ng maraming mga pagbubukod:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

Paano kung ang paghihiwalay ay wasto? Halimbawa, ang pagpapalit F = 7/0 sa itaas na code na may F = 7/5 nagbibigay:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

Mga Pagbubukod na Tinukoy ng Gumagamit sa Python

Maaari kang magkaroon ng iyong pagbubukod din at tawagan sila sa ibang pagkakataon sa iyong programa. Hinahayaan ka nitong magbigay ng isang tukoy na paglalarawan ng iyong pagbubukod at pangalanan ito ayon sa gusto mo.

Gayunpaman, ang bawat pagbubukod na tinukoy ng gumagamit (direkta o hindi direkta) ay nagmula pa rin sa built-in Pagbubukod klase ng Python.

Ang halimbawa ng code sa ibaba ay tumutukoy sa base Pagbubukod direkta sa pamamagitan ng pagtawag RuntimeError mula dito:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

Tandaan na koneksyonError , sa kasong ito, ay isang klase na tinukoy ng gumagamit, na maaari mong itaas anumang oras na kailangan mo ito sa iyong programa.

Kaugnay: Ang Gabay ng Baguhan sa Mga Regular na Pagpapahayag Sa Python

Maaari kang gumawa ng isang pagbubukod na tinukoy ng gumagamit sa pamamagitan ng pagkuha ng direkta mula sa Pagbubukod batayang klase. Gayunpaman, ang pagbubukod sa ibaba, pinipigilan ang pagbabawas ng 5 mula sa 6 at tawagan ang pagbubukod mula sa batayang klase nang direkta:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

Sa pagsasagawa, maaari mong gamitin ang isang pagbubukod na tinukoy mo nang mas maaga sa pamamagitan ng pagtawag dito sa isa pang pagpapaandar. Halimbawa, maaari kang lumikha ng isang floatError pinapayagan lamang ang pagdaragdag ng dalawang float:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

Dahil natukoy mo na ngayon ang a FloatError klase, itinaas ito ng Python kung susubukan mong magdagdag ng dalawang di-float na literal gamit ang addtwoFloat pagpapaandar

Maaari mong i-print ang FloatError klase sa parehong file ng Python kung saan mo ito nilikha upang makita kung ano ang mangyayari:

print(FloatError)
Output:

FloatError , gayunpaman, ay hindi isang built-in na pagbubukod ng Python. Maaari mo itong i-verify sa pamamagitan ng pagtawag FloatError sa isa pang sariwang file ng Python kung saan hindi mo nilikha ang klase na ito:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

Makakakuha ka ng PangalananError dahil hindi ito kinikilala ng Python bilang isang karaniwang pagbubukod.

Maaari mong subukan ang pagtukoy din sa sarili ng iba pang mga klase ng error pati na rin upang makita kung paano sila naglaro.

Gawing Mas Mahusay sa Gumagamit ng Iyong Mga Exception ang iyong Mga Program sa Python

Maraming pamantayan na pagbubukod sa Python. Ngunit maaari mo ring tukuyin ang iyong. Gayunpaman, ang kadalian ng paggamit ng iyong programa ay nakasalalay sa ilang mga lawak sa kung paano ito humawak ng iba't ibang mga pagbubukod (kung tinukoy ng gumagamit, hindi tukoy, o pamantayan).

Gayunpaman, hayaan ka ng mga eksepsiyon na magdikta kung paano dapat gumana ang iyong programa kapag nakikipag-ugnay sa kanila ang mga gumagamit. Malinaw at maikli na nagsasabi ng sanhi ng isang error ay nagbibigay din sa mga gumagamit ng tungkol sa kung ano ang ginagawa nilang mali, at kung minsan, itinuturo ito sa tamang direksyon.

Magbahagi Magbahagi Mag-tweet Email Paano i-debug ang Iyong Python Code

Magbigay ng kasangkapan sa iyong sarili ng may kaalamang kalabasa ang bawat Python bug sa iyong landas.

Basahin Susunod
Mga Kaugnay na Paksa
  • Programming
  • Sawa
  • Mga Tutorial sa Coding
Tungkol sa May-akda Idisou Omisola(94 na artikulong nalathala)

Si Idowu ay madamdamin tungkol sa anumang matalinong tech at pagiging produktibo. Sa kanyang libreng oras, naglalaro siya kasama ang pag-coding at paglipat sa chessboard kapag siya ay naiinip, ngunit gusto din niya ang paghihiwalay mula sa nakagawiang gawain sa isang sandali. Ang kanyang hilig sa pagpapakita sa mga tao ng paraan sa paligid ng modernong tech ay nag-uudyok sa kanya na magsulat pa.

Higit pa Mula sa Idowu Omisola

Mag-subscribe sa aming newsletter

Sumali sa aming newsletter para sa mga tip sa tech, pagsusuri, libreng ebook, at eksklusibong deal!

Mag-click dito upang mag-subscribe