. .

BAGIAN KE DELAPAN: JAVA Error Handling and Exceptions Pada Netbeans IDE

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

BAGIAN KE DELAPAN: JAVA Error Handling and Exceptions (mengatasi kesalahan dan pengecualian) 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.

Secara umum, kesalahan dapat dipecah menjadi dua kategori: kesalahan Desain-waktu dan kesalahan logis - Design-time errors and Logical errors.
Design-time errors yang mudah dikenali karena NetBeans biasanya menggarisbawahi kesalahan tersebut. Jika kesalahan akan mencegah program dapat berjalan, NetBeans akan menggarisbawahi dengan garis bawah merahLogical errors adalah kesalahan yang kita buat sebagai seorang programmer. Program ini akan berjalan tetapi, karena kita melakukan sesuatu yang kesalahan dengan coding, ada kemungkinan program akan mengalami CRASH baik keseluruhan atau parsial. Kita akan melihat contoh kesalahan run-time errors. Kita juga akan melihat bagaimana untuk menangani kesalahan tersebut dan bagaimana Java menangani kesalahan.
Exceptions - Pengecualian.
Exceptions-Pengecualian (atau peristiwa luar biasa) adalah masalah yang timbul selama pelaksanaan program. Ketika sebuah Exception terjadi aliran normal program terganggu dan program / aplikasi berakhir tidak normal, yang tidak dianjurkan, karena itu, pengecualian ini harus ditangani.
Java - Built-in Exceptions
Java mendefinisikan beberapa class Exceptions - Pengecualian dalam Package java.lang standar. Yang paling umum Exceptions - Pengecualian ini adalah subclass dari standard type RuntimeException. Sejak java.lang secara implisit diimpor ke semua program Java, Exceptions - Pengecualian yang berasal dari RuntimeException yang paling  tersedia secara otomatis.
Java mendefinisikan beberapa jenis lain dari Exceptions - Pengecualian yang berhubungan dengan berbagai perpustakaan kelasnya - various class libraries.
Berikut adalah daftar Java Unchecked RuntimeException.
No.
Exception & Description
1
ArithmeticException
Arithmetic error, such as divide-by-zero.
2
ArrayIndexOutOfBoundsException
Array index is out-of-bounds.
3
ArrayStoreException
Assignment to an array element of an incompatible type.
4
ClassCastException
Invalid cast.
5
IllegalArgumentException
Illegal argument used to invoke a method.
6
IllegalMonitorStateException
Illegal monitor operation, such as waiting on an unlocked thread.
7
IllegalStateException
Environment or application is in incorrect state.
8
IllegalThreadStateException
Requested operation not compatible with the current thread state.
9
IndexOutOfBoundsException
Some type of index is out-of-bounds.
10
NegativeArraySizeException
Array created with a negative size.
11
NullPointerException
Invalid use of a null reference.
12
NumberFormatException
Invalid conversion of a string to a numeric format.
13
SecurityException
Attempt to violate security.
14
StringIndexOutOfBounds
Attempt to index outside the bounds of a string.
15
UnsupportedOperationException
An unsupported operation was encountered.

Berikut ini adalah daftar Java Checked Exceptions yang ditetapkan di java.lang.
No.
Exception & Description
1
ClassNotFoundException
Class not found.
2
CloneNotSupportedException
Attempt to clone an object that does not implement the Cloneable interface.
3
IllegalAccessException
Access to a class is denied.
4
InstantiationException
Attempt to create an object of an abstract class or interface.
5
InterruptedException
One thread has been interrupted by another thread.
6
NoSuchFieldException
A requested field does not exist.
7
NoSuchMethodException
A requested method does not exist.

Exceptions-Pengecualian dapat terjadi karena berbagai alasan yang berbeda. Berikut adalah beberapa skenario di mana pengecualian terjadi.
  • Seorang pengguna telah memasuki data yang tidak valid.
  • Sebuah file yang perlu dibuka tidak dapat ditemukan.
  • Koneksi jaringan telah hilang di tengah komunikasi atau JVM telah kehabisan memori.
Beberapa Exceptions-Pengecualian ini disebabkan oleh kesalahan pengguna, orang lain dengan kesalahan programmer, dan lain-lain oleh sumber daya fisik yang telah gagal dalam beberapa cara. Berdasarkan ini, kita memiliki tiga kategori Exceptions-Pengecualian. Kita perlu memahami Exceptions-Pengecualian untuk mengetahui bagaimana penanganan eksepsi bekerja di Java.
  • Checked exceptions - Sebuah Checked exceptions adalah Exceptions-Pengecualian yang terjadi pada waktu kompilasi, ini juga disebut sebagai Exceptions-Pengecualian waktu kompilasi. Exceptions-Pengecualian ini tidak bisa diabaikan pada saat kompilasi, programmer harus mengurus (handle) Exceptions-Pengecualian.
Contohnya, jika kita menggunakan FileReader Class dalam program untuk membaca data dari sebuah file, jika file yang ditentukan dalam konstruktor tidak ada, maka FileNotFoundException terjadi, dan compiler meminta programmer untuk menangani Exceptions-Pengecualian tersebut.
CONTOH;
import java.io.File;
import java.io.FileReader;

public class FilenotFound_Demo {

   public static void main(String args[]) {
      File file = new File("E://file.txt");
      FileReader fr = new FileReader(file);
   }
}

Jika kita mencoba untuk mengkompilasi program ini, akan mendapatkan Exceptions-Pengecualian berikut.

$javac FilenotFound_Demo.java 2>&1
FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown
      FileReader fr = new FileReader(file); 
                      ^
1 error
Catatan - Sejak metode read() dan close() dari FileReader Class ditiadakan dari IOException, kita dapat mengamati bahwa compiler memberitahukan untuk menangani IOException, bersama dengan FileNotFoundException.

Sebagai refrensi coba tinjau TUGAS & LATIHAN : Membuat Java Program Perhitungan Bunga Investasi Dengan CLASS TextIO() Dan Membuat Input Data Profile Pada Netbeans IDE, disana kita akan temui bahwa metode TextIO() yang juga sudah ditiadakan dari IOException, sama seperti metode read() dan close() yang harus ditangani dengan menggunakan java class baru sebagai pendukungnya CLASS TextIO().
  • Unchecked exceptions - Unchecked exceptions adalah pengecualian yang terjadi pada saat eksekusi. Ini juga disebut sebagai Runtime Exceptions. Ini termasuk bug pemrograman, seperti kesalahan logika atau penyalahgunaan API. Runtime Exceptions akan diabaikan pada saat kompilasi.
Misalnya, jika kita telah menyatakan sebuah array dari ukuran 5 dalam program, dan mencoba untuk memanggil elemen ke-6 dari array maka ArrayIndexOutOfBoundsExceptionexception terjadi.
CONTOH :
public class Unchecked_Demo {
 
   public static void main(String args[]) {
      int num[] = {1, 2, 3, 4};
      System.out.println(num[5]);
   }
}

Jika kita mengkompilasi dan menjalankan program di atas, Kita akan mendapatkan Exceptions-Pengecualian berikut:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Unchecked_Demo.main(Unchecked_Demo.java:5)
  • Errors - ini bukan Exceptions-Pengecualian, tapi masalah yang timbul di luar kendali pengguna atau programmer. Kesalahan ini biasanya diabaikan dalam kode karena kita jarang bisa berbuat apa-apa menangani kesalahan ini. Misalnya, jika stack overflow terjadi, kesalahan akan timbul. Mereka juga diabaikan pada saat kompilasi.
Exception Hierarchy
Semua exception classes adalah subtipe dari java.lang.Exception class. Exception class adalah subclass dari Throwable class. Selain Exception class ada subclass lain yang disebut Kesalahan yang berasal dari Throwable class.
Kesalahan adalah kondisi abnormal yang terjadi dalam kasus kegagalan yang parah, ini tidak ditangani oleh Java programs. Kesalahan yang dihasilkan untuk menunjukkan kesalahan yang dihasilkan oleh runtime environment. Contoh: JVM kehabisan memori. Biasanya, program tidak dapat pulih dari kesalahan.
Exception class memiliki dua subclass utama: IOException class dan RuntimeException Class.

Berikut ini adalah daftar Built-in Pengecualian yang paling umum checked and unchecked Java.
Exceptions Methods
Berikut ini adalah daftar metode penting yang tersedia di Throwable class.
No.
Method & Description
1
public String getMessage()
Mengembalikan rincian pesan tentang exception yang telah terjadi. Pesan ini diinisialisasi dalam konstruktor Throwable.
2
public Throwable getCause()
Mengembalikan penyebab exception yang diwakili oleh objek Throwable.
3
public String toString()
Mengembalikan nama class concatenated dengan hasil getMessage ().
4
public void printStackTrace()
Mencetak hasil toString () bersama dengan stack trace untuk System.err, error output stream.
5
public StackTraceElement [] getStackTrace()
Mengembalikan array yang berisi setiap elemen pada stack trace. Elemen pada indeks 0 mewakili atas panggilan stack, dan elemen terakhir dalam array mewakili metode di bagian bawah panggilan stack.
6
public Throwable fillInStackTrace()
Mengisi stack trace pada Throwable object dengan current stack trace, menambah informasi sebelumnya dalam stack trace.

Catching Exceptions
Method catches an exception menggunakan kombinasi dari try and catch keywords. Sebuah try/catch block ditempatkan di sekitar kode yang mungkin menghasilkan exception. Kode dalam try/catch block disebut sebagai protected code, dan sintaks untuk menggunakan try/catch terlihat seperti berikut:
Sintaksis
try {
   // Protected code
}catch(ExceptionName e1) {
   // Catch block
}
Kode yang rentan terhadap exceptions ditempatkan di try block. Ketika exceptions terjadi, exceptions yang terjadi ditangani oleh catch block yang terkait. Setiap try block harus segera diikuti baik oleh catch block atau finally block. Sebuah catch statement melibatkan declaring jenis exception yang kita coba (try) untuk tangkap (catch). Jika exceptions terjadi didalam protected code, catch block (atau blok) yang mengikuti try akan diperiksa. Jika jenis exceptions yang terjadi tercantum dalam catch block, exceptions akan dilewati ke catch block sebanyak argumen yang dilewatkan ke parameter metode.
Contoh;
Berikut ini adalah array yang dideklarasikan dengan 2 elemen. Kemudian kode mencoba untuk mengakses elemen ke-3 dari array yang meniadakan pengecualian - throws an exception.
// File Name : ExcepTest.java
import java.io.*;

public class ExcepTest {

   public static void main(String args[]) {
      try {
         int a[] = new int[2];
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e) {
         System.out.println("Exception thrown  :" + e);
      }
      System.out.println("Out of the block");
   }
}

Ini akan menghasilkan OUTPUT sebagai berikut:
Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
Out of the block

Multiple Catch Blocks
Sebuah try block dapat diikuti oleh beberapa/multiple catch blocks. Sintaks untuk beberapa/multiple catch blocks terlihat seperti berikut:
Sintaksis
try {
   // Protected code
}catch(ExceptionType1 e1) {
   // Catch block
}catch(ExceptionType2 e2) {
   // Catch block
}catch(ExceptionType3 e3) {
   // Catch block
}
Pernyataan sebelumnya menunjukkan tiga catch blocks, tetapi kita dapat memiliki sejumlah dari mereka setelah dicoba pertama kali. Jika exception terjadi dalam Protected code, exception dilemparkan ke catch block pertama dalam daftar. Jika jenis data exception dilemparkan cocok dengan ExceptionType1, maka itu akan tertangkap di sana. Jika tidak, exception melewati ke pernyataan menangkap kedua-second catch statement. Ini terus berlanjut sampai exception tertangkap atau berada pada semua tangkapan, dalam hal ini metode saat berhenti eksekusi -method stops execution dan exception is thrown ke metode sebelumnya pada panggilan stack.
Contoh
Berikut adalah segmen kode yang menunjukkan bagaimana menggunakan multiple try/catch statements.
try {
   file = new FileInputStream(fileName);
   x = (byte) file.read();
}catch(IOException i) {
   i.printStackTrace();
   return -1;
}catch(FileNotFoundException f) // Not valid! {
   f.printStackTrace();
   return -1;
}

Catching Multiple Type of Exceptions
Sejak Java 7, kita dapat menangani lebih dari satu Exceptions-pengecualian menggunakan blok catch tunggal, fitur ini menyederhanakan kode. Berikut adalah bagaimana kita akan melakukannya:
catch (IOException|FileNotFoundException ex) {
   logger.log(ex);
   throw ex;

Throws/Throw Keywords
Jika metode tidak menangani Exceptions-pengecualian diperiksa, metode harus menyatakan dengan menggunakan melempar kata kunci. Melempar kata kunci muncul pada akhir kode metode ini. Kita bisa melempar Exceptions-pengecualian, baik yang baru dipakai satu atau Exceptions-pengecualian yang baru saja kita tangkap, dengan menggunakan kata kunci throw-throw keyword. Cobalah untuk memahami perbedaan antara throws dan throw keywords, throws digunakan untuk menunda penanganan Exceptions-pengecualian yang diperiksa dan digunakan  untuk meminta pengecualian eksplisit. Metode berikut menyatakan throws sebuah RemoteException.
Contoh:
import java.io.*;
public class className {

   public void deposit(double amount) throws RemoteException {
      // Method implementation
      throw new RemoteException();
   }
   // Remainder of class definition
}
Metode dapat menyatakan bahwa itu melontarkan lebih dari satu Exceptions-pengecualian, dalam hal ini Exceptions-pengecualian dinyatakan dalam daftar dipisahkan dengan koma. Misalnya, metode berikut mendeklarasikan bahwa itu melemparkan RemoteException dan InsufficientFundsException.
Contoh:
import java.io.*;
public class className {

   public void withdraw(double amount) throws RemoteException,
      InsufficientFundsException {
      // Method implementation
   }
   // Remainder of class definition
}

Finally Block
finally block diikuti oleh blok try atau catch blok. Sebuah kode finally block selalu mengeksekusi, terlepas dari terjadinya suatu Exception. Menggunakan finally block memungkinkan kita untuk menjalankan pembersihan-jenis laporan yang ingin kita jalankan, apa pun yang terjadi dalam kode yang dilindungi-protected code. Sebuah finally block muncul di akhir blok catch dan memiliki sintaks sebagai berikut:
Sintaksis
try {
   // Protected code
}catch(ExceptionType1 e1) {
   // Catch block
}catch(ExceptionType2 e2) {
   // Catch block
}catch(ExceptionType3 e3) {
   // Catch block
}finally {
   // The finally block always executes.
}
Contohnya:
public class ExcepTest {

   public static void main(String args[]) {
      int a[] = new int[2];
      try {
         System.out.println("Access element three :" + a[3]);
      }catch(ArrayIndexOutOfBoundsException e) {
         System.out.println("Exception thrown  :" + e);
      }finally {
         a[0] = 6;
         System.out.println("First element value: " + a[0]);
         System.out.println("The finally statement is executed");
      }
   }
}

Ini akan menghasilkan OUTPUT sebagai berikut:

Exception thrown  :java.lang.ArrayIndexOutOfBoundsException: 3
First element value: 6
The finally statement is executed
Perhatikan hal berikut :
  • Sebuah klausa catch tidak bisa ada tanpa try statement.
  • Hal ini tidak wajib untuk akhirnya klausa setiap kali try/catch block hadir.
  • try block tidak dapat hadir tanpa klausa catch atau klausa finally.
  • Kode tidak dapat berada di antara try, catch, finally blocks.
try-with-resources
Umumnya, ketika kita menggunakan sumber daya apapun seperti streams, connections, dll kita harus menutup mereka secara eksplisit menggunakan finally block. Dalam program berikut, kita membaca data dari file menggunakan FileReader dan kita menutupnya menggunakan finally block.
Contoh:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ReadData_Demo {

   public static void main(String args[]) {
      FileReader fr = null;
      try {
         File file = new File("file.txt");
         fr = new FileReader(file); char [] a = new char[50];
         fr.read(a);   // reads the content to the array
         for(char c : a)
         System.out.print(c);   // prints the characters one by one
      }catch(IOException e) {
         e.printStackTrace();
      }finally {
         try {
            fr.close();
         }catch(IOException ex) {
            ex.printStackTrace();
         }
      }
   }
}
try-with-resources, juga disebut sebagai automatic resource management, adalah mekanisme penanganan Exception-pengecualian baru yang diperkenalkan di Java 7, yang secara otomatis menutup sumber daya yang digunakan dalam try catch block.
Untuk menggunakan pernyataan ini, kita hanya perlu menyatakan sumber daya yang diperlukan dalam kurung, dan sumber daya yang dibuat akan ditutup secara otomatis pada akhir blok. Berikut adalah sintaks dari try-with-resources.
Sintaksis
try(FileReader fr = new FileReader("file path")) {
   // use the resource
   }catch() {
      // body of catch
   }
}
Berikut adalah program yang membaca data dalam file menggunakan try-with-resources statement.
Contoh:
import java.io.FileReader;
import java.io.IOException;

public class Try_withDemo {

   public static void main(String args[]) {
      try(FileReader fr = new FileReader("E://file.txt")) {
         char [] a = new char[50];
         fr.read(a);   // reads the contentto the array
         for(char c : a)
         System.out.print(c);   // prints the characters one by one
      }catch(IOException e) {
         e.printStackTrace();
      }
   }
}
Berikut poin harus diingat saat bekerja dengan try-with-resources statement.
  • Untuk menggunakan class try-with-resources statement itu harus mengimplementasikan antarmuka AutoCloseable dan close() method  yang akan dipanggil secara otomatis pada saat runtime.
  • Kita dapat mendeklarasikan lebih dari satu try-with-resources statement.
  • Sementara kita menyatakan beberapa kelas dalam blok try dari try-with-resources statement ini akan ditutup dalam urutan terbalik.
  • Kecuali deklarasi sumber daya dalam kurung (parenthesis) semuanya adalah sama seperti blok try/catch blok try biasa.
  • Resource dinyatakan/declared dalam try akan dipakai sebelum dimulainya try-blok.
  • Resource dideklarasikan pada blok try secara implisit dinyatakan sebagai akhir blok.
User-defined Exceptions
Kita dapat membuat Exceptions-pengecualian sendiri di Java. Berikut adalah hal yang kita perhatikan ketika menulis Exceptions Class yang kita buat sendiri:
  • Semua Exceptions-pengecualian harus menjadi anak dari Throwable-child of Throwable.
  • Jika kita ingin menulis Exceptions-pengecualian diperiksa secara otomatis diberlakukan oleh Handle or Declare Rule, kita perlu memperpanjang Exceptions Class.
  • Jika kita ingin menulis runtime Exceptions-pengecualian, kita perlu memperpanjang RuntimeException Class.
Kita dapat mendefinisikan Exceptions Class kita sendiri sebagai berikut:
class MyException extends Exception {
}
Kita hanya perlu untuk memperpanjang-extends Exception Class yang telah ditetapkan untuk membuat Exception Class kita sendiri. Ini dianggap pengecualian diperiksa-checked exceptions. InsufficientFundsException class adalah Exception-pengecualian yang ditetapkan pengguna yang meluas dari Exception Class, membuatnya menjadi Exception-pengecualian yang diperiksa-checked exception. Exceptions Class adalah seperti class lain, yang berisi bidang/field  dan metode yang berguna. Contoh :
// File Name InsufficientFundsException.java
import java.io.*;

public class InsufficientFundsException extends Exception {
   private double amount;
 
   public InsufficientFundsException(double amount) {
      this.amount = amount;
   }
 
   public double getAmount() {
      return amount;
   }
}
Untuk menunjukkan menggunakan user-defined exception, CheckingAccount class berikut berisi withdraw() method yang melemparkan InsufficientFundsException.
// File Name CheckingAccount.java
import java.io.*;

public class CheckingAccount {
   private double balance;
   private int number;
 
   public CheckingAccount(int number) {
      this.number = number;
   }
 
   public void deposit(double amount) {
      balance += amount;
   }
 
   public void withdraw(double amount) throws InsufficientFundsException {
      if(amount <= balance) {
         balance -= amount;
      }else {
         double needs = amount - balance;
         throw new InsufficientFundsException(needs);
      }
   }
 
   public double getBalance() {
      return balance;
   }
 
   public int getNumber() {
      return number;
   }
}
Berikut ini program BankDemo yang mendemonstrasikan memohon deposit() dan withdraw() methods dari CheckingAccount.
// File Name BankDemo.java
public class BankDemo {

   public static void main(String [] args) {
      CheckingAccount c = new CheckingAccount(101);
      System.out.println("Depositing $500...");
      c.deposit(500.00);
   
      try {
         System.out.println("\nWithdrawing $100...");
         c.withdraw(100.00);
         System.out.println("\nWithdrawing $600...");
         c.withdraw(600.00);
      }catch(InsufficientFundsException e) {
         System.out.println("Sorry, but you are short $" + e.getAmount());
         e.printStackTrace();
      }
   }
}

Mengkompilasi semua di atas tiga file dan menjalankan BankDemo. Ini akan menghasilkan OUTPUT sebagai berikut:

Depositing $500...

Withdrawing $100...

Withdrawing $600...
Sorry, but you are short $200.0
InsufficientFundsException
         at CheckingAccount.withdraw(CheckingAccount.java:25)
         at BankDemo.main(BankDemo.java:13)

Common Exceptions
Di Java, adalah memungkinkan untuk kita menentukan dua catergories dari Exceptions-Pengecualian dan Kesalahan-Errors.
  • JVM Exceptions - ini adalah pengecualian/kesalahan yang eksklusif atau logis dilemparkan oleh JVM. Contoh: NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException.
  • Programmatic Exceptions - pengecualian ini dilemparkan secara eksplisit oleh aplikasi atau programmer API. Contoh: IllegalArgumentException, IllegalStateException.
Seperti telah dijelaskan diatas di Java, kesalahan ditangani oleh sebuah objek Exception. Exception-Pengecualian dikatakan dilemparkan, dan itu tugas kita untuk menangkap mereka. kita dapat melakukan ini dengan try … catch block. The try … catch block terlihat seperti ini:
try {

}

catch ( ExceptionType error_variable ) {

}
try adalah bagian dari try … catch block yang berarti "try this code". Jika ada yang salah, Java akan melompat ke catch block. Ia memeriksa apa yang kita miliki antara kurung bulat ( ExceptionType error_variable ) untuk melihat apakah kita telah menangani kesalahan. Jika kita memiliki Exception benar maka kode apa pun yang kita miliki antara kurung kurawal tangkapan akan dijalankan. Jika kita tidak memiliki jenis Exception yang benar maka Java akan menggunakan penanganan exception default untuk menampilkan pesan kesalahan.
Sebagai contoh, membuat aplikasi konsol baru. Sebut saja apa pun yang kita suka. Di dalam kode tersebut untuk metode utama, masukkan berikut kode ini:
try {
int x = 10;
int y = 0;
int z = x / y;

System.out.println( z );
}
catch ( Exception err ) {
System.out.println( err.getMessage( ) );
}
Di bagian try dari try … catch block, kita telah menetapkan tiga bilangan bulat, x, y dan z. Kita berusaha untuk membagi y ke x, dan kemudian mencetak jawabannya.
Jika ada yang tidak beres, kita memiliki bagian catch. Di antara kurung bulat catch block kita memiliki ini:
Exception err
Jenis Exception yang kita gunakan datang pertama. Dalam hal ini kita menggunakan objek error Exception. Ini adalah  "catch all" jenis Exception, dan bukan praktek pemrograman yang baik. Kita akan mengubahnya ke jenis tertentu dalam sekejap. Setelah jenis Exception, kita memiliki spasi kemudian nama variabel. Kita telah disebut err - catch ( Exception err ), atau kita dapat sebut apapun yang kita sukai. Dalam kurung kurawal tangkapan kita memiliki pernyataan cetak - System.out.println( err.getMessage( ) ) . Tapi lihat apa yang kita miliki antara kurung putaran println:
err.getMessage( )
getMessage adalah metode yang tersedia untuk objek Exception. Seperti namanya, ia mendapat pesan kesalahan yang terkait dengan Eksepsi. Jalankan program dan menguji itu. Kode dan Output kita harus terlihat seperti ini:
package errorhandling;

/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class errorChecking {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
        int x = 10;
        int y = 0;
        int z = x / y;

        System.out.println( z );
        }
        catch ( Exception err ) {
        System.out.println( err.getMessage( ) );
        }
 
    }
}

Kesalahan itu sendiri, yang dihasilkan oleh getMessage, adalah garis di tengah:
/ by zero
Dengan kata lain, membagi dengan nol adalah kesalahan. Java tidak akan membiarkan kita membagi nomor dengan nol, maka hasilnya adalah pesan kesalahan "/ by zero".
Coba ubah kode menjadi seperti ini:
package errorhandling;

/**
 *
 * @author CHRISTIANTO "GEMBLONG" DHARMA WIBOWO LEARN JAVA
 */
public class errorChecking {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
        double x = 10.0;
        double y = 0.0;
        double z = x / y;

        System.out.println( z );
        }
        catch ( Exception err ) {
        System.out.println( err.getMessage( ) );
        }
 
    }
}
maka hasilnya :
pesan kesalahan akan ditampilkan di jendela Output :
run:
Infinity
BUILD SUCCESSFUL (total time: 1 second)

Kali ini, Java program berhenti karena hasilnya akan menjadi nomor besar tak berhingga-Infinity.
Kesalahan yang melibatkan angka harus benar-benar ditangani oleh "catch all" Exception type. Ada jenis tertentu yang disebut ArithmeticException. Hapus Eksepsi kata antara kurung bulat blok menangkap kita  catch ( Exception err ) . Menggantinya dengan ArithmeticException -  catch ( ArithmeticException ) . Sekarang jalankan program lagi, hasilnya akan sama - InfinityKita menemukan tidak ada perbedaan dalam pesan kesalahan ditampilkan di jendela Output. Tapi kita menggunakan praktek pemrograman yang baik dengan mempersempit jenis kesalahan yang kita harapkan. Pada bagian berikutnya, Kita akan belajar tentang Stack Trace.

0 komentar:

Posting Komentar