. .

BAGIAN KE DELAPAN: JAVA Error Handling - Logic Errors Pada Netbeans IDE

Posted by CHRISTIANTO D,WIBOWO | D3MI-2016 STMIK BUMI GORA On Rabu, Januari 18, 2017 No comments

BAGIAN KE DELAPAN: JAVA Error Handling - Logic Errors Pada Netbeans IDE, Sebelum kita meneruskan mempelajari pembelajaran ini, ada baiknya kita baca artikel-artikel sebelumnya yang terhubung dengan langkah-langkah pembelajaran ini (Link) BAHASA PEMROGRAMAN JAVA PADA NETBEANS IDE.

Logic Errors- kesalahan logika adalah kesalahan yang dibuat oleh programmer, kesalahan logis dalam pemrograman Java bisa sangat sulit untuk ditemukan karena mereka tidak mencerminkan apapun dalam masalah peng-coding-an atau kesalahan dalam penggunaan unsur bahasa Java. Kode berjalan sempurna seperti yang ditulis - hanya saja kode tidak melakukan tugas seperti yang diharapkan. 


Akibatnya, kesalahan logis dapat menjadi kesalahan yang paling sulit untuk ditemukan. Kita perlu menghabiskan banyak waktu akan menelusuri kode-kode mencari letak kesalahan. Berikut daftar kesalahan logis umum yang  programmer Java hadapi:
  • Using incorrect operator precedence: Salah dalam menggunakan operator yang didahulukan, Java menafsirkan urutan operator sangat penting. Aplikasi sering menghasilkan hasil yang salah karena programmer tidak menempatkan tanda kurung (parentheses) di di tempat yang benar. Misalnya, contoh berikut menghasilkan output dari 15, 18, 12, dan 13 dari empat variabel dengan angka yang sama dan dengan operator aritmatika yang sama juga dengan hasil yang berbeda, kesalahan ini karena pengalokasian (atau kurangnya) dari tanda kurung.
package operatorerror;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class OperatorError {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // Create some variables.
      int MyVar1 = 5 + 7 * 3 / 2;
      int MyVar2 = (5 + 7) * 3 / 2;
      int MyVar3 = (5 + 7) * (3 / 2);
      int MyVar4 = (5 + (7 * 3)) / 2;
      // Output the result.
      System.out.println(
            "MyVar1:"+ MyVar1 +
            "  nMyVar2:"+ MyVar2 +
            "  nMyVar3:"+ MyVar3 +
            "  nMyVar4:"+ MyVar4);
   }
}
Bagaimana JIKA :
package operatorerror;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class OperatorError {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // Create some variables.
      int MyVar1 = (((5 + 7) * 3) / 2);
      int MyVar2 = (((5 + 7) * 3) / 2);
      int MyVar3 = (((5 + 7) * 3) / 2);
      int MyVar4 = (((5 + 7) * 3) / 2);
      // Output the result.
      System.out.println(
            "MyVar1:"+ MyVar1 +
            "  nMyVar2:"+ MyVar2 +
            "  nMyVar3:"+ MyVar3 +
            "  nMyVar4:"+ MyVar4);
   }
}
  • Defining the wrong count : Mendefinisikan count yang salah: Mungkin kesalahan logis paling umum adalah menghitung hal-hal tidak benar. Manusia menghitung dimulai dengan 1, sedangkan komputer mulai menghitung dengan 0. Jadi, tidak jarang kita menemukan bahwa salah satu aplikasi menjadi off (karena 0 tidak diperhitungkan) dalam melakukan tugas, apakah itu tugas yang menjalankan loop atau bekerja dengan koleksi item tertentu.
  • Assuming a condition is true when it isn’t: Mengasumsikan kondisi benar yang ternyata salah: Programmer akan sering melihat pernyataan digunakan untuk mendefinisikan suatu kondisi dan menganggap bahwa pernyataan tersebut benar (atau salah) tanpa memverifikasi logika pernyataan. Penggunaan pernyataan atau ketika kita benar-benar dimaksudkan untuk menggunakan dan menyatakan, juga dapat menyebabkan masalah. Logika yang digunakan untuk membuat keputusan menyebabkan banyak programmer, bahkan programmer berpengalaman, banyak salah. Selalu memverifikasi asumsi kita sendiri untuk pernyataan bersyarat.
  • Relying on floating point numbers for precision work: Mengandalkan angka floating point untuk pekerjaan presisi: kita tidak dapat mengasumsikan bahwa angka floating point akan memberikan nomor tertentu. Ini berarti kita tidak dapat memeriksa angka floating point untuk kesetaraan untuk setiap nilai tertentu - kita malah harus menggunakan rentang nilai untuk melakukan pengecekan. angka floating point selalu dianggap angka perkiraan di Java.
  • Relying on integer values to measure values: Mengandalkan nilai integer untuk mengukur nilai-nilai: Integer sangat baik untuk menghitung item, karena mereka ketepatannya. Namun, banyak operasi matematika bilangan bulat menciptakan hasil yang tidak tepat. Hal ini terutama berlaku untuk operator "pembagian/division", karena sisanya selalu tinggalkan. (Jumlah tersebut dibulatkan ke bawah.) Gunakan nilai floating point atau BigDecimal jenis objek ketika kita perlu untuk mengukur sesuatu dan presisi sensitif/penting.
  • Misplacing a semicolon: Salah dalam menempatkan tanda titik koma: Itu mungkin membuat kode Java yang tetap akan mengkompilasi dan berjalan dengan baik walaupun memiliki titik koma di tempat yang salah dan hasil program juga menjadi salah. Contohnya :
package forlooperror;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class ForLoopError {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // Declare the variable.
      int Count;
      // Create the loop.
      for (Count=1; Count<=10; Count++);
      {
         // Output the result.
         System.out.println("Count is " + Count);
      }
    }
}

DIMANA LETAK KESALAHANNYA ?
Perhatikan bahwa titik koma muncul segera setelah untuk pernyataan -  for (Count=1; Count<=10; Count++);  , Memaksakan perintah setelah blok kode sebagaimana mestinya. Padahal program ini ingin mencetak nilai-nilai individu Count (LOOP), sedangkan program ini hanya mencetak satu kalimat yang mengatakan Count adalah 11.
OUTPUT YANG SALAH:
Maka koreksinya adalah :
package forlooperror;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class ForLoopError {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // Declare the variable.
      int Count;
      // Create the loop.
      for (Count=1; Count<=10; Count++)
      {
         // Output the result.
         System.out.println("Count is " + Count);
      }
    }
}
OUTPUT YANG BENAR:
Dan kita coba ke hal-hal yang lebih complex, dan untungnya NetBeans memiliki beberapa built-in tools untuk membantu kita menemukan masalah-masalah tersebut. Pertama, kita akan memeriksa kode-kode dibawah ini:
package errorhandling2;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class errorChecking2 {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int LetterCount=0;
        String check_word="Debugging";
        String single_Letter="";
        int i;
     
        for (i=0; i< check_word.length(); i++){
            single_Letter=check_word.substring(1, 1);
         
            if (single_Letter.equals("g")){
                LetterCount++;
            }
        }
        System.out.println("G was found " +LetterCount +" times.");
    }
}
Apa yang kita coba lakukan di sini adalah menghitung berapa kali huruf "g" terjadi pada kata "Debugging". SEHARUSNYA jawabannya jelas 3. Namun, ketika kita menjalankan program cetak Jendela Output:
run:
G was found 0 times.
BUILD SUCCESSFUL (total time: 1 second)
Jadi kita telah membuat kesalahan di suatu tempat di kode kita. Tapi di mana ? program dijalankan OK, dan tidak menghasilkan Exception-Pengecualian bagi kita untuk mempelajarinya dari jendela Output. Jadi apa yang harus dilakukan ?
Untuk melacak masalah terjadi dengan kode kita, NetBeans memungkinkan kita untuk menambahkan sesuatu yang disebut Breakpoint. Klik di pinggir jendela kode untuk menambahkan Breakpoint baru:
Dari menu NetBeans, klik Debug> Debug errorhandling2. NetBeans akan melompat ke breakpoint. Sekarang telah menghentikan eksekusi kode pada saat itu. Kita juga harus melihat toolbar baru muncul:
Empat tombol pertama memungkinkan kita untuk menghentikan sesi debugging, restart, pause, dan melanjutkan sesi debug. Lima tombol di sebelah memungkinkan kita untuk step into code, step over code, step over expression, step out, or jump to the cursor.
Kita juga dapat menekan tombol F5 untuk melanjutkan. Kode harus berjalan seperti biasa dengan Breakpoint dimana pun itu. Sesi debugging kemudian akan berakhir. Ketika sesi berakhir debugging, klik kembali pada Breakpoint untuk menyingkirkan itu. Sekarang tambahkan Breakpoint untuk untuk for loop :
Sekarang klik Debug> New Watch. Sebuah session yang memungkinkan kita untuk melacak apa yang ada di variabel. Jadi ketik huruf i dalam kotak dialog Watch dan klik OK:
Tambah Watch lain dan kemudian ketik single_letter. Klik OK. Tambahkan Watch ketiga dan ketik LetterCount. Kemudian harus tiga variabel tersebut di bagian bawah layar kita:
Sekarang tekan Langkah Ke ikon pada toolbar:
Atau hanya tekan tombol F7 pada keyboard. Terus menekan tombol F7 dan melihat apa yang terjadi dalam jendela Watch. kita harus menemukan bahwa variabel i muncul 1 setiap kali (dalam hal ini saya menekan F7 sebanyak 3X, jadi muncul Value untuk "i" =3). Tapi dua variabel lainnya tetap sama:
Karena tidak ada dalam variabel single_letter maka LetterCount tidak dapat melampaui nol. Jadi kita telah menemukan masalahnya - kita menggunakan substring yang salah, karena tidak meraih karakter apapun. Menghentikan sesi debugging dan mengubah baris substring kita mnjadi seperti ini:
package errorhandling2;
/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class errorChecking2 {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int LetterCount=0;
        String check_word="Debugging";
        String single_Letter="";
        int i;
   
        for (i=0; i< check_word.length(); i++){
            single_Letter = check_word.substring( i, i + 1 );
       
            if (single_Letter.equals("g")){
                LetterCount++;
            }
        }
        System.out.println("G was found " +LetterCount +" times.");
    }
}
Sekarang mulai sesi debugging lagi. Terus menekan tombol F7 untuk pergi ke setiap baris untuk loop. Kali ini kita akan melihat single_Letter dan variabel LetterCount berubah.
Ketika kode berakhir, Anda akan melihat jendela Output menampilkan berikut:
"G was found 3 times."
Kita sekarang memiliki jawaban yang benar. Jadi jika hal-hal yang tidak berjalan sesuai rencana dengan kode kita, cobalah menetapkan Breakpoint dan beberapa Watches untuk variabel. Kemudian memulai sesi debugging. Pada bagian berikutnya, kita akan menangani subjek yang berbeda sama sekali: Cara membuka file teks di Java. -  How to Read a Text File in Java -

0 komentar:

Posting Komentar