Melayani Dengan Riang Gembira

dan DOA

Cari di Blog Ini

14 Oktober 2020

Menerapkan Penanganan Error Dalam Mendeteksi Kesalahan Program

Indikator Pencapaian Kompetensi dan Tujuan Pembelajaran

IPK Pengetahuan

  1. Menjelaskan konsep error handling (penanganan kesalahan) dalam pemrograman aplikasi berorientasi obyek.
  2. Menjelaskan prosedur error handling (penanganan kesalahan)dalam pemrograman aplikasi berorientasi obyek.
  3. Menganalisis penanganan kesalahan (error handling) dalam pemrograman aplikasi berorientasi obyek.
  4. Menerapkan error handling (penanganan kesalahan)dalam pemrograman aplikasi berorientasi obyek.
  5. Merancang program aplikasi berorientasi obyek dengan penerapan error handling (penanganan kesalahan).

IPK Keterampilan

  1. Membuat kode program aplikasi berorientasi obyek yang menerapkan error handling (penanganan kesalahan).
  2. Menguji program aplikasi berorientasi obyek yang menerapkan error handling (penanganan kesalahan).
  3. Memperbaikipenanganan kesalahan(error handling) dalam program aplikasi berorientasi obyek.
  4. Memodifikasipenanganan kesalahan(error handling) dalam program aplikasi berorientasi obyek.

TujuanPembelajaran

Setelah melalui kegiatan diskusi, menggali informasi, presentasi dan tugas praktek diharapkan peserta didik akan dapat :
  1. Siswa dapat Menjelaskan konsep penanganan error dalam PBO dengan benar.
  2. Siswa dapat Menjelaskan prosedur penanganan error dalam pemrograman aplikasi berorientasi obyek dengan baik.
  3. Menerapkan prosedur penanganan error dalam pemrograman aplikasi berorientasi obyek dengan baik

Materi Kegiatan Pembelajaran

Syntax Error,  Runtime Error dan Logic Error

Error dapat saja terjadi dalam pemrograman. Secara garis besarnya, error dalam pemrograman Java ini ada beberapa jenis, yaitu :

Syntax error
Runtime error
Logic error


Syntax error

Syntax adalah aturan penulisan yang sudah ditetapkan pada struktur elemen – elemen dalam bahasa pemrograman.  Dalam bahasa umum sintaks error adalah kesalahan penulisan kata/kalimat

Jadi syntax error ini adalah kesalahan dalam coding karena aturan penulisan yang tidak sesuai atau kesalahan pada konstruksi kode, misalnya :
  • Salah dalam menuliskan keyword Java
  • Tidak menggunakan tanda kurung kurawal untuk pernyataan
  • Tidak menggunakan tanda atau karakter yang sesuai, misalnya tidak menggunakan tanda ” “, untuk tipe data String.
Syntax error ini mudah ditelusuri atau ditemukan karena compiler akan memberi tahu kita di mana letak kesalahan dalam penulisan kode program.

Sebagai contoh :

public class SelamatDatang {
   
    public static void main(String args []){
        //Seharusnya "Selamat datang di pemrograman Java"
        System.out.println(Selamat datang di pemrograman Java");
   
    }
   
}


Kode di atas memiliki error, yaitu seharusnya teks Selamat datang di pemrograman Java berada dalam tanda ” “.

Oleh karena itu, setelah anda melakukan compile, maka compiler akan memberi tahu error tersebut seperti gambar di bawah ini :


Kesalahan ditunjukan pada baris ke 15 oleh compiler.
Syntax Error biasanya terjadi karena kesalahan penulisan. Mungkin kekurangan sebuah perintah di Java atau lupa untuk menulis tanda titik koma pada akhir pernyataan. 

Java mencoba untuk megisolasi error tersebut dengan cara menunjukkan baris dari kode dan terlebih dahulu karakter yang salah dalam baris tersebut. 

Bagaimanapun juga, error belum tentu berada pada titik yang ditunjuk. 

Kesalahan umum lainnya adalah dalam kapitalisasi, ejaan, penggunaan dari karakter khusus yang tidak benar, dan penghilangan dari pemberian tanda baca yang sebenarnya. 

Runtime Error

Runtime error merupakan salah satu jenis error yang terjadi karena program secara tiba-tiba dihentikan ketika program tersebut sedang berjalan.

Runtime error ini dapat terjadi bila program tidak bisa menangani operasi yang tidak mungkin untuk dilakukan.

Contohnya runtime error ini dapat terjadi karena :

Ketika program meminta user untuk menginputkan angka, namun user malah menginputkan huruf
Ketika melakukan perhitungan pembagian angka 1 dengan 0
Sebagai contoh:

public class CekError {
   
    public static void main(String args []){
        //membagi angka 1 dengan angka 0
        System.out.println( 1 / 0 );
   
    }
   
}

public class CekError {
   
    public static void main(String args []){
        //membagi angka 1 dengan angka 0
        System.out.println( 1 / 0 );
   
    }
   
}
Pada program di atas akan menampilkan pesan error karena program di minta untuk membagi angka 1 dengan angka nol. Pada command prompt akan menampilkan pesan error seperti di bawah ini :

Runtime error pada pemrograman Java
Runtime error pada command prompt pemrograman Java
Demikian pula jika kode diatas di jalankan pada IDE Netbeans ataupun Eclipse, maka compiler akan memberikan pesan dan tanda runtime error yang terjadi.

Logic error

Logic error terjadi bila program berjalan dan tidak memberikan hasil seperti yang diinginkan.


Misalnya anda membuat program konversi dari nilai centimeter ke nilai milimeter.

Seperti sudah diketahui bahwa :

1 cm = 10 mm

Contoh program  sederhananya :

public class Konversi {
   
    public static void main(String args []){
       
        System.out.println("1 cm itu sama dengan ");
        //Konversi cm ke mm
        System.out.println( 1.0 / 10.0 + "mm");
   
    }
   
}
public class Konversi {
   
    public static void main(String args []){
       
        System.out.println("1 cm itu sama dengan ");
        //Konversi cm ke mm
        System.out.println( 1.0 / 10.0 + "mm");
   
    }
   
}
Setelah mengeksekusi program di atas, maka akan terlihat pada command prompt seperti di bawah ini:

Program di atas berjalan dengan mulus ketika dieksekusi baik ketika menggunakan IDE Netbeans ataupun Eclipse, namun bila diperhatikan terlihat nilai bahwa 1 cm itu sama dengan 0.1 mm, tentu saja ini adalah hal yang salah, dan inilah yang disebut dengan logic error.



Runtime Error


Sebuah program yang berhasil dikompile belum tentu berhasil di jalankan. Inilah yang dinamakan Run time error, kesalahan ini tidak akan ditampilkan sampai kita menjalankan program tersebut. Hal ini bisa saja terjadi misalnya dikarenakan struktur yang di buat programmer tidak jelas atau mungkin tidak logis.

Exception Handling

1) Dasar Exception

Exception adalah sebuah event yang menjalankan alur proses normal pada program. Event ini biasanya berupa kesalahan(error) dari beberapa bentuk. Ini disebabkan program kita berakhir tidak normal. Dalam bahasa java, ketika terjadi kesalahan, otomatis akan dilemparkan sebuah objek yang disebut exception, yang kemudian dapat diproses lebih lanjut oleh method yang siap menangani kesalahan tersebut.

Method tersebut dapat dipilih untuk menangani exception berdasarkan tipe tertentu.Exception dapat muncul tidak beraturan dalam suatu method, atau dapat juga dibuat secara menual dan nantinya melaporkan sejumlah keadaan kesalahan ke method yang memanggil.

2) Tipe-Tipe Exception

Beberapa exception yang telah digunakan dalam begian-bagian terdahulu adalah ArithmeticException, FileNotFoundException, dan InputMisMatchException.

 

Masih banyak kelas exception lain yang digunakan dalam java, antara lain NullPointerException,ClassNotFoundException,IOException, RunTimeException, IndexOutOBoundsException, IllegalArgumentException

Kelas Throwable merupakan akar dari semua kelas exception.Semua kelas exception java mewarisi secara langsung atau tidak langsung dari Throwable. Kita bisa menciptakan kelas exception sendiri dengan cara mewarisi exception atau subclass exception. 

Kelas-kelas exception dapat diklasifikasikan menjadi 3 tipe utama : error system, exception, dan exception runtime.

Error system dilempar oleh JVM dan direpresentasikan oleh kelas Error. Kelas error mendeskripsikan error internal. Error semacam ini jarang terjadi. Jika terjadi, kita dapat memberitahukan kepada user dan menghentikan program secara normal.

Kelas-kelas exception dapat diklasifikasikan menjadi 3 tipe utama : error system, exception, dan exception runtime.

Penanganan Exceptions

Untuk menangani exception dalam java, kita gunakan blok try-catch-throwthrows-finally. Apa yang kita lakukan dalam program kita adalah kita menempatkan pernyataan yang mungkin menghasilkan exception dalam blok ini.

Bentuk umum dari blok try-catch-finally adalah :

Listing Program

   try{

      //tulis pernyataan yang dapat mengakibatkan exception

      //dalam blok ini

  }

  catch( <exceptionType1><varName1> ){

     //tulis aksi apa dari program Anda yang dijalankan jika ada

     //exception tipe tertentu terjadi

  }

Exception dilemparkan selama eksekusi dari blok try dapat ditangkap dan ditangani dalam blok catch. Kode dalam blok finally selalu di-eksekusi.


class ContohEksepsi1 {

  public static void main(String[] args) {

    int pembilang = 2;

    int penyebut = 0;

    try {

      int hasil = pembilang/penyebut; // menimbulkan eksepsi

      System.out.println("Hasil = " + hasil); // tidak dieksekusi

    } catch (ArithmeticException ae) {

      System.out.println("KESALAHAN: " +

        "Terdapat pembagian dengan nol");

    }

    System.out.println("Statemen setelah blok try-catch");

  }

}

 

 

class ContohEksepsi2 {

  public static void main(String[] args) {

    int pembilang = 2;

    int penyebut = 0;

    try {

      int hasil = pembilang/penyebut;         // SALAH

      System.out.println("Hasil = " + hasil); // tidak dieksekusi

    } catch (Exception e) {

      System.out.println("KESALAHAN: " +

        "Terdapat pembagian dengan nol");

    }

    System.out.println("Statemen setelah blok try-catch");

  }

}

 

class ContohEksepsi3 {

  public static void main(String[] args) {

    int pembilang = 2;

    int penyebut = 0;

    try {

      int hasil = pembilang/penyebut;         // SALAH

      System.out.println("Hasil = " + hasil); // tidak dieksekusi

    } catch (Exception e) {

      System.out.println(e.getMessage());

    }

    System.out.println("Statemen setelah blok try-catch");

  }

}

 

 

class ContohEksepsi4 {

  public static void main(String[] args) {

    int pembilang = 2;

    int penyebut = 0;

    try {

      int hasil = pembilang/penyebut;         // SALAH

      System.out.println("Hasil = " + hasil); // tidak dieksekusi

    } catch (Exception e) {

      e.printStackTrace();   // mencetak stack trace

    }

    System.out.println("Statemen setelah blok try-catch");

  }

}

 Demo Finaly

 class DemoFinally {          

  private static int i = 0;

 

  public static void main(String[] args) {   

    while (true) {

      try {

        System.out.print("Pada saat i = " + i + ": ");

        if (i++ == 0) {

          throw new Exception();  // melempar eksepsi

        }

        System.out.println("Tidak terjadi eksepsi");

             } catch (Exception e) {

        System.out.println("Terdapat eksepsi");

             } finally {

        System.out.println("Statemen dalam blok finally\n");

        if (i == 2) {

          break;  // pada saat i==2, pengulangan akan berhenti

        }

      }

    }

  }       

}

 

 Contoh penanganan error

  

/**

 * @(#)RunTimeExceptionError.java

 *

 *

 * @author

 * @version 1.00 2019/9/10

 */

 

 

public class RuntimeExceptionTest {

 

            public static void main(String[] args){

            int i = Integer.parseInt("abc");

            System.out.println("kode setelah exception");

            }

}

 

Output yang muncul

--------------------Configuration: <Default>--------------------

Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"

    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

    at java.lang.Integer.parseInt(Integer.java:580)

    at java.lang.Integer.parseInt(Integer.java:615)

    at RuntimeExceptionTest.main(RuntimeExceptionTest.java:14)

 

Process completed.

 Cara Menangkap Error

 /**

 * @(#)RuntimeExceptionTestHandling.java

 *

 *

 * @author

 * @version 1.00 2019/9/10

 */

public class RuntimeExceptionTestHandling {

public static void main(String[] args){

            int i = 0;

            int k = 0;

            try{

            i = Integer.parseInt("50");  // mengkonversi string 50 menjadi angka integer 50  // perintahnya benar

             k = Integer.parseInt("abcd");  // mengkonversi string abcd menjadi angka integer : tapi akan error

            }

            catch(NumberFormatException ex ) {

                        System.out.println("Disini ditampilkan pesan kesalahan ! : ");

                        System.out.println("============================ ");

                        ex.printStackTrace();    // menampilkan pesan kesalahan

            }

            System.out.println("kode setelah exception var i : "+i);

            System.out.println("kode setelah exception var k : "+k);

            }

}

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class GetInputFromKeyboard {

        public static void main(String[] args) {

//Create BufferedReader object from Standard input device.
//Standard input device is typically a keyborad.

        BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );

//Prompt a user to enter his/her name

        String name = "";

        System.out.println("Please Enter Your Name:");
//  Read data into name variable 
        try{
            name = dataIn.readLine(); }catch( IOException e ){
            System.out.println("Error!");

        } // Display the name System.out.println("Hello " + name +"!");

    }
}

Tugas / Penilaian

Soal Error Handling.

 A. Teori.

  1. Dalam setiap pemrograman biasanya ada 3(tiga) jenis error, sebutkan dan jelaskan dua jenis kesalahan umum dalam PBO?
  2. Sebutkanlah istilah khusus di dalam penanganan error pada PBO ?
  3. Penanganan error dalam PBO dilakukan oleh suatu class. Sebutkan dan jelaskan class yang dimaksud tersebut ?
  4. Kelas Induk penanganan error mempunyai 3 (tiga) tipe kelas turunannya, sebutkan dan jelaskan ?
  5. Tuliskan block atau sintak umum penulisan penanganan error dalam format exception ?

A. Praktek
  1. Buatlah contoh penulisan penanganan error untuk eksepsi aritmatka.
  2. Buatlah contoh penulisan penanganan error untuk eksepsi catch (Exception e).
  3. Buatlah contoh penulisan penanganan error untuk eksepsi menampilkan pesan kesalahan (Exception e) dengan menampilkan e.getMessage()
  4. Buatlah contoh penulisan penanganan error untuk eksepsi menampilkan penelusuran kesalahan (e.printStackTrace())
  5. Buatlah contoh penulisan penanganan error melalui prosedur eksespsi finaly
Reactions:

0 Komentar di Sini:

Posting Komentar

Nuhun sudah komentar