ValueError: invalid literal for int(): @#&
AsSeperti youyang cananda seedapat thelihat fungsi <code>int()</code> functiontidak isberapa unhappygemar withdengan the numbernombor <code>@#&</code> (asdan wellmemang itsepatutnya should bedemikian). TheBaris lastterakhir linemenunjukkan showsapa whatmasalahnya; the problemPython is;telah Pythonmenemui found a <code>ValueError</code>. (Ralat nilai). How canBagaimana ourharus program dealkita withmenangani thismasalah ini? WhatApa weyang doharus iskita first:buat putialah, pertamanya: theletakkan placekod whereyang themenimbulkan errorsralat occursitu indalam ablok <code>try</code> block(cuba), anddan secondkeduanya: tellberitahu Python howbagaimana wekita wantmahu ralat <code>ValueError</code>s handleddikendalikan. The following program does this:
Program berikut melakukan ini:
<source lang="python">
print "TypeTaip Control C oratau -1 tountuk exitkeluar"
numbernombor = 1
while numbernombor != -1:
try:
numbernombor = int(raw_input("EnterMasukkan a numbernombor: "))
print "YouAnda enteredtelah memasukkan: ", numbernombor
except ValueError:
print "ThatItu wasbukan not a numbernombor."
</source>
Sekarang bila kita laksanakan program baru dan memberinya input seperti <code>@#&</code>, program itu akan memberitahu kita bahawa "Itu bukan nombor." dan meneruskan apabila yang dilakukannya sebelum itu.
Now when we run the new program and give it <code>@#&</code> it tells us "That was not a number." and continues with what it was doing before.
Apabila program anda kerap mengalami ralat yang dapat anda perbetulkan, letakkan kod dalam blok <code>try</code>, dan letakkan cara untuk mengendalikan ralat itu dalam blok <code>except</code> (kecuali).
Berikut ini sebuah contoh Pengendalian Ralat yang lebih kompleks.
When your program keeps having some error that you know how to handle, put code in a <code>try</code> block, and put the way to handle the error in the <code>except</code> block.
Here is a more complex example of Error Handling.
<source lang="python">
# Program by Mitchell Aikens 2012
import math
def mainutama():
successberjaya = 0
while (successberjaya == 0):
try:
epactepak()
successberjaya = 1
except ValueError:
print "ErrorRalat. PleaseSila entermasukkan annilai integer value."
year = 0
except NameError:
print "ErrorRalat. PleaseSila entermasukkan annilai integer value."
year = 0
except SyntaxError:
print "ErrorRalat. PleaseSila entermasukkan annilai integer value."
year = 0
finally:
print "Program CompleteSelesai"
def epactepak():
## P: epak ialah cara menghitung umur Bulan
## pada satu Januari
yeartahun = int(input("WhatIni yeartahun is itapa?\n"))
C = year/100
epactvalC = tahun/100 nilai_epak = (8 + (C/4) - C + ((8*C + 13)/25) + 11 * (yeartahun%19))%30
print "TheEpak Epact isialah: ",epactval nilai_epak
mainutama()
</source>
|