Anda di halaman 1dari 12

PENANGANAN ERROR PADA PROGRAM

JAVA MENGGUNAKAN METODE ERROR


HANDLING

Dibuat:

Arief Saputra (161021450110)

Ananda Rizky Siregar (161021450059)

Barda Irawan (161021450113)

Moch. Ilham Syahputra (161021450091)

Kelas:

06TPLM001

Dosen:

Petrus Sianggian P

PROGRAM STUDI : TEKNIK INFORMATIKA

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER ERESHA

Jl. Raya Puspitek No.46, Buaran, Serpong Email : Eresha@ac.id


I. Latar Belakang Masalah

 Menganalisa Error pada sebuah program java supaya berjalan dengan baik
 Memahami Error agar dapat memecahkan/mengatasi yang terjadi pada program
 Dengan adanya Error Handling kita dapat menyelesaikan Error dengan terstruktur

II. Landasan Teori

A. Teknik Kompilasi
Teknik adalah suatu metode atau cara, sedangkan Kompilasi adalah suatu proses
penggabungan serta menterjemahkan sesuatu (source program) menjadi bentuk lain.

Proses kompilasi dapat digambarkan melalui sebuah kotak hitam (black box) berikut :

program sumber kompilator bahasa sasaran

pesan-pesan kesalahan

(error messages)

Proses kompilasi dari suatu kompilator pada dasarnya dapat dibagi ke dalam 2 bagian utama
yaitu bagian analisis dan bagian sintesis.

 Tahap analisis program yang ditulis dalam bahasa sumber dibagi dan dipecah ke
dalam beberapa bagian yang kemudian akan dipresentasikan ke dalam suatu bentuk
antara dari program sumber.

Secara umum proses dalam tahap analis terdiri dari 3 bagian utama, yaitu :

1. Proses analisis leksikal (scanner)

Berfungsi memecah teks program sumber menjadi bagian-bagian kecil yang


mempunyai satu arti yang disebut token, seperti : konstanta, nama variabel, keyword,
operator.

Tugas tugasnya secara detail adalah

 Mengidentifikasikan semua besaran yang membangun suatu bahasa


 Mentransformasikan ke token-token
 Menentukan jenis dari token-token
 Menangani kesalahan
 Scanner, didesign untuk mengenali = keyword, operator, identifier
 Token : separates chacaracters of the source language into group that logically
belong together
Misalnya : konstanta, nama variabel ataupun operator dan delimiter (atau sering
disebut menjadi besaran lexical)

2. Proses analisis sintaktik (parser)

Berfungsi mengambil program sumber (sudah dalam bentuk barisan token) dan
menentukan kedudukan masing-masing token berdasarkan aturan sintaksnya dan
memeriksa kebenaran dan urutan kemunculan token.

 Pengelompokan token-token kedalam class syntax (bentuk syntax) seperti


procedure, Statement dan expression
 Grammer : sekumpulan aturan-aturan, untuk mendefinisikan bahasa sumber
 Grammer dipakai oleh syntax analyser untuk menentukan struktur dari
program sumber
 Proses pendeteksiannya (pengenalan token) disebut dengan parsing
 Maka Syntax analyser sering disebut parser
 Pohon sintaks yang dihasilkan digunakan untuk semantics analyser yang
bertugas untuk menentukan maksud dari program sumber, misalnya operator
jumlah maka semantics analyser akan mengambil aksi apa yang harus
dilakukan
 Terdapat statement : ( A + B ) * ( C + D)
 Akan menghasilkan bentuk sintaksis : <factor>, <term> &<expression>

3. Proses analisis semantik

Berfungsi menentukan validitas semantiks/keberartian program sumber.


Biasanya bagian ini digabung dengan Pembangkit kode antara (intermediate code
generator).

 Proses ini merupakan proses kelanjutan dari proses kompilasi sebelumnya,


yaitu analisa leksikal (scanning) dan analisa sintak (parsing)
 Bagian terakhir dari tahapan analisis adalah semantik
 Memanfaatkan pohon sintak yang dihasilkan dari parsing
 Proses analisa sintak dan analisa semantik merupaka 2 proses yang sangat erat
kaitannya dan sulit untuk dipisahkan
 Contoh : A := ( A + B ) * ( C + D )
 Parser hanya akan mengenali simbol-simbol tersebut, compiler memanggil
routin semantics

 Tahap sintesis yang berikutnya program sasaran dibentuk berdasarkan representasi


antara yang dihasilkan pada tahap analisis.

Untuk tahap sintetis terdiri dari 2 bagian utama, yaitu


4. Proses yang menghasilkan kode (code generator)

Berfungsi membangkitkan kode program target dalam bahasa target yang


ekivalen dengan bahasa sumber .

5. Proses optimasi kode (code optimizer)

Berfungsi mengefisienkan kode antara yang dibentuk.

Fase-fase proses sebuah kompilasi adalah sebagai berikut :

program sumber

penganalisa leksikal

(scanner)

penganalisa sintaks

(parser)

pengelola tabel simbol penganalisa semantik penanganan kesalahan

pembangkit kode antara

pengoptimal kode

pembangkit kode

bahasa sasaran

Bahasa Pemrograman
Bahasa pemrograman adalah bahasa yang menjadi sarana manusia untuk berkomunikasi
dengan komputer. Pikiran manusia yang tidak terstruktur harus dibuat terstruktur agar bisa
berkomunikasi dengan komputer. Komputer memerlukan kepastian dan logika yang benar untuk dapat
melakukan suatu instruksi tertentu. Untuk itu diperlukan algoritma yg baik dan benar.

Penggolongan bahasa pemrograman berdasarkan tingkat ketergantungannya dengan mesin :

a. Bahasa Mesin
Bahasa mesin adalah bahasa yang berisi kode-kode mesin yang hanya dapat diinterpretasikan
langsung oleh mesin komputer. Bahasa mesin sering juga disebut native code (sangat tergantung pada
mesin tertentu). Bahasa ini merupakan bahasa level terendah dan berupa kode biner 0 dan 1.
Sekumpulan instruksi dalam bahasa mesin dapat membentuk microcode (semacam prosedur dalam
bahasa mesin).

Contoh:

untuk mesin IBM/370

0001100000110101 = 1835

yang berarti mengkopikan isi register 5 ke register 3

Keuntungan : Eksekusi cepat

Kerugian : Sangat sulit dipelajari manusia

b. Bahasa Assembly (Mnemonic Code)


Merupakan bentuk simbolik dari bahasa mesin, dianggap sebagai bahasa pemrograman yang
pertama kali berbentuk string dan lebih mudah dimengerti manusia. Setiap kode bahasa mesin memiliki
simbol sendiri dalam bahasa assembly.

Misalnya ADD untuk penjumlahan, MUL untuk perkalian, SUB untuk pengurangan, dan lain-lain.
Sekumpulan kode - kode bahasa assembly dapat membentuk makroinstruksi. Bahasa assembly juga
memiliki program pendebug-nya, tidak seperti bahasa mesin.

Misalnya: Turbo Assembler dan debug pada DOS.

Assembler akan mencocokkan token simbol dari awal s/d akhir, kemudian dikodekan menjadi
bahasa mesin.

Kelebihan : Eksekusi cepat, masih bisa dipelajari daripada bahasa mesin, file hasil sangat kecil.
Kekurangan : Tetap sulit dipelajari, program sangat panjang.

c. Bahasa Tingkat Tinggi (High Level Language) / user oriented


Bahasa ini lebih dekat dengan bahasa manusia. Bahasa ini juga memberikan banyak sekali fasilitas
kemudahan pembuatan program, misalnya: variabel, tipe data, konstanta, struktur kontrol, loop, fungsi,
prosedur dan lain-lain. Contoh: Pascal, Basic, C++, dan Java. Mendukung information hiding,
enkapsulasi, dan abstract data type.

Bahasa Tingkat tinggi memiliki generasi, misalnya generasi ke-3 (Pascal, C/C++) dan generasi ke-
4 (Delphi, VB, VB.NET, Visual Foxpro)

Keuntungan : - Mudah dipelajari

- Mendekati permasalahan yang akan dipecahkan

- Kode program pendek

Kerugian : Eksekusi lambat

d. Bahasa yang berorientasi pada masalah spesifik (specific problem oriented).


Bahasa ini adalah bahasa yang digunakan langsung untuk memecahkan suatu masalah tertentu.

Contoh : SQL untuk aplikasi database, COGO untuk aplikasi teknik sipil, Regex untuk mencocokkan
pola pada string tertentu, MatLab untuk matematika, dll.

Bahasa problem oriented kadang digolongkan ke dalam bahasa tingkat tinggi.

Translator

Translator (penerjemah) melakukan pengubahan source code / source program (program


sumber) ke dalam target code / object code / object program (program objek).

Source code ditulis dalam bahasa sumber, object code berupa bahasa pemrograman lain / bahasa
mesin pada suatu komputer.

Jadi penerjemah membaca suatu program yang ditulis dalam bahasa sumber dan
menerjemahkan bahasa sumber ke dalam suatu bahasa lain.

Saat melakukan proses penerjemahan, penerjemah akan melaporkan adanya


keanehan/kesalahan yang mungkin diketemukan.
Ada beberapa macam translator, yaitu :

a. Assembler
Source code adalah bahasa assembly, object code adalah bahasa mesin

contoh : Turbo Assembler, Macro Assembler

b. Interpreter
Input berupa source code yaitu bahasa scripting seperti PHP, Basic, Perl, Javascript, ASP, Java
bytecode, Basic, Matlab, Matematica, Ruby.

Interpreter tidak menghasilkan object code. Hanya menghasilkan translasi internal. Input dapat
berasal dari source code maupun dari inputan program dari user. Source code dan inputan data user
diproses pada saat yang bersamaan.

Pada interpreter, program tidak harus dianalisis seluruhnya dulu, tapi bersamaan dengan jalannya
program.

Keuntungan : mudah bagi user, debuging cepat

Kekurangan : eksekusi program lambat, tidak langsung menjadi program executable.


Compiler

Adalah suatu program dimana mengambil input sebuah program yang ditulis pada satu bahasa
program (source language) ke bahasa lain (the object on target language).

Compile time adalah saat pengubahan dari source code menjadi object code. Runtime adalah saat
eksekusi object code dan mungkin menerima input data dari user. Output : bahasa assembly. Kemudian
oleh linker dihasilkan file EXE.

Kekurangan : debugging lebih lambat

Keuntungan : eksekusi program lebih cepat, menghasilkan file executable yang berdiri sendiri.

B. Error Handling
Error yaitu kesalahan, dan Handling yaitu penanganan. Sehingga error handling merupakan
penanganan kesalahan pada berbagai macam keadaan dalam pemrograman.

Error Handling adalah satu penanganan kesalahan (eror) pada berbagai macam keadaan dalam
pemrograman. Setiap ada kesalahan, maka eksekusi program tidak akan dihentikan secara tiba tiba,
tetapi akan diteruskan ke baris program yang terdapat script penanganan kesalahan.

Hal-Hal yang perlu diperhatikan dalam membuat error handling:

1. Gunakan bahasa uang dipahami oleh user.


2. Hindari kata-kata seperti: bad, dummy, dll karena dapat menyebabkan user merasa bahwa
dirinya bodoh.
3. Jangan menggunakan kata-kata yang terkesan menyalahkan user.
4. Hindari kalimat perintah, sehingga user merasa bahwa sistem yang dibuat sudah menyediakan
apa saja yang dibutuhkan user.
5. membuat FAQ (Frequently User Question) yaitu pertanyaan yang sering diajukan oleh user.
6. Optimalisasi function undo dan redo
7. Intelligent error checking & recovery
8. Proteksi pengguna
9. Validitas masukan, misalnya jika pengguna harus memasukkan bilangan positif, sementara ia
memasukkan bilangan negatif, maka harus ada mekanisme untuk mengulang pemasukan data
tersebut.
10. Optimalisasi Help function (quick access help).
11. Editing error field
12. Menyiapkan beberapa macam model respon
13. Desain yang efektif dan efisien
14. Return cursor & highlight error
15. No interrupting workflow.
16. Confirmation commands
17. Penampilan pesan

Penanganan Error Handling

1) Kesalahan Program
 Kesalahan Leksikal
 Kesalahan Dalam mengetik/mengeja
 Misal ELSE dituliskan dengan ELE

Pada gambar diatas sudah sangat jelas kesalahannya, sehingga tidak tercompailer dengen
meneluruh. Yang seharusnya ELSE menjadi ele.

 Kesalahan Sintaks
 Misalnya dalam operasi aritmatika dengan tanda kurung yang jumlahnya kurang
 Contoh : if ( n_akhir > = 85 && n_akhir < = 100 {
Dan disini terlihat terjadi kesalahan pada sintaks pada kondisi if (n_akhir >= 85 && n_akhir
< = 100 { yang terjadi adalah kurangnya kurang penutup pada akhir kondisi tersebut menjadi kesalhan
pada compiler, dan program tidak dapat berjalan dengan sempurna.

 Kesalahan Semantics
 Tipe data yang salah
Contoh : int : c
c = 1.5*0.78
Variabel belum didefinisikan

Pada error yang terjadi pada program diatas disebabkan karena variabel yang belum
terdefinisi, maka untuk menangani error tersebut pastikan semua variabel sudah terdefinisikan.
Langkah-langkah :

 Mendeteksi kesalahan
 Melaporkan kesalahan
 Tindak lanjut perbaikan
Misal : compiler menemukan kesalahan, yang bisa meliputi
o Kode kesalahan
o Pesan kesalahan dalam bahasa alami
o Nama dan atribute identifier
Contoh : error 162 Jumlah : Unknow identifier
Dapat diartikan: Kode kesalahan= 162, pesan kesalhan + unknow identifier,
nama identifier + jumlah
Ada beberapa reaksi yang dilakukan compiler

 Reaksi-reaksi yang tidak dapat diterima


 Compilator crash : berhenti atau hang
 Looping : compilator tidak bisa berhenti (infinite/onbounded loop)
 Menghasilkan objek program yang salah : berbahaya, bisa diketahui/muncul setelah
program dieksekusi

 Reaksi yang benar, tapi kurang dapat diterima dan kurang bermanfaat
 Compilator menemukan kesalahan pertama, melaporkannya lalu berhenti (halt)
 Pemrograman membuang waktu untuk melakukan pengulangan compilasi untuk
setiap kali terdapat sebuah error
 Reaksi-reaksi yang dapat diterima
 Reaksi yang sudah dapat dilakukan : Compilator melaporkan error
o Recovery : Pemulihan
o Repair : Perbaikan
 Reaksi yang belum dapat dilakukan
o Compiler mengkoreksi kesalahan
o Menghasilkan objek program sesuai yang diinginkan program
o Compiler memiliki kemampuan untuk mengetahui maksud dari pemrogram
o Belum diimplementasikan pada program (sekarang ini)

Berikut ini tips sederhana untuk mencegah terjadinya error dalam program
 Menulislah dengan teliti, coba ikuti aturan penulisan program dengan benar dan konsisten.
 Menulislah dengan rapi, coba ikuti aturan penulisan program yang baik atau mengikuti konvensi
(coding standar). Hal ini akan mempermudah dalam pencarian kesalahan program.
 Selalu konsisten dalam penamaan variabel dan sejenisnya juga membantu mencegah terjadinya error
karena terkadang kesalahan terjadi karena perbedaan huruf besar dan kecil.
 Pastikan algoritma yang digunakan sudah teruji kebenarannya.
DAFTAR PUSTAKA

 Hari Soetanto, S.kom, M.Sc, 2004. Buku Teknik Kompilasi


 Henk Albert Nymeyer, Prentice Hall, 1996. Presctice and principles of Compiler building
with C
 PWS publishing Company, 1997. Introduction to The theory of computation, Michael sipser
 Dick Grune, Henri E. Bal, Et all, John Wiley & son, 2000. The Essence of Compiler Design

Anda mungkin juga menyukai