Try dan Catch

Tipe Data dan Exception di Java

Jim White

Java Developer

Masalah di Java

  • Masalah dapat terjadi di aplikasi
    • Karena input salah
    • Karena kesalahan kode
    • Karena hal tak terduga
  • Masalah ini disebut exception
    • Mengganggu alur kontrol normal
  • Java melempar exception
Tipe Data dan Exception di Java

Contoh Exception

public static void main(String[] args) {
    ArrayList<String> allStars = new ArrayList<String>();
    allStars.add("Mays");
    allStars.add("Aaron");
    allStars.add("Ruth");
    String last = allStars.get(3); // This will cause an exception
    System.out.println(last);
}
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 3 out of 
bounds for length 3
Tipe Data dan Exception di Java

Try

  • Bungkus kode yang dapat menghasilkan exception dengan blok try
    • "Coba kode ini; jika ada masalah, teruskan ke blok catch"
try {
    // Pernyataan yang dijalankan dan diawasi untuk exception
}
Tipe Data dan Exception di Java

Catch

  • Tempatkan blok catch setelah try
    • Bertindak sebagai handler untuk menangani exception
    • Exception yang tertangkap diteruskan ke blok ini sebagai parameter
  • Blok try/catch wajib untuk beberapa jenis exception
    • Opsional untuk lainnya
try {
    // Pernyataan yang dijalankan dan diawasi untuk exception
} catch (<Exception type> <variable name>) {
    // Pernyataan saat exception terjadi
}
Tipe Data dan Exception di Java

Menangkap IndexOutOfBoundsException

try {
  ArrayList<String> allStars = new ArrayList<String>();
  allStars.add("Mays");
  allStars.add("Aaron");
  allStars.add("Ruth");
  String last = allStars.get(3); // Accessing an element that isn't there
  System.out.println(last);
} catch (IndexOutOfBoundsException e) {
  System.out.println("Oops - wrong index");
}
Oops - wrong index
Tipe Data dan Exception di Java

Multiple Catch

  • Gunakan beberapa blok catch untuk jenis pengecualian berbeda
  • Setiap catch punya tipe dan variabel pengecualian sendiri
  • Saat pengecualian terjadi, Java memeriksa catch berurutan hingga menemukan yang cocok
try {
    ArrayList<String> nums 
      = new ArrayList<String>();
    nums.add("one");
    String last = nums.get(0);
    Integer.valueOf(last);
    System.out.println(last);
} catch (IndexOutOfBoundsException eIndex) {
    System.out.println("Oops - wrong index");
} catch (NumberFormatException eValueOf) {
    System.out.println(
      "Oops - String not a number");
}
Oops - String not a number
Tipe Data dan Exception di Java

Catch "All"

  • Gunakan catch (Exception variable){ } sebagai penangkap umum
    • Menangani pengecualian apa pun yang tidak ditangani blok catch lain
try {
    // Code to try
} catch (IndexOutOfBoundsException eIndex) {
    System.out.println("Oops - wrong index");
} catch (NumberFormatException eValueOf) {
    System.out.println("Oops - String not a number");
} catch (Exception e) { // Menangani semua pengecualian selain dua di atas
    System.out.println("Something unplanned happened");
}
Tipe Data dan Exception di Java

Finally

  • Kode dalam blok finally selalu dijalankan
// Saat pengecualian terjadi
try {
    Integer.valueOf("one");
} catch (NumberFormatException eValueOf) {
    System.out.println("Oops");
} finally {
    System.out.println("Doing cleanup");
}
Oops
Doing cleanup

 

// Saat tidak ada pengecualian
try {
    Integer.valueOf("1");
} catch (NumberFormatException eValueOf) {
    System.out.println("Oops");
} finally {
    System.out.println("Doing cleanup");
}
Doing cleanup
Tipe Data dan Exception di Java

Objek Exception

  • Objek Exception yang masuk ke blok catch berisi banyak informasi
  • Gunakan metodenya untuk mengetahui penyebabnya
    • .getMessage() untuk pesan penyebab
    • .getClass() untuk kelas/tipe Exception
    • .printStackTrace() untuk menampilkan stack trace (slide berikut)
public class ExceptionExample {

    public static void main(String[] args) {
        try {
            Integer.valueOf("one");
        } catch (NumberFormatException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
    }
}
Tipe Data dan Exception di Java

Stack trace Exception

  • Stack trace merekam alur eksekusi hingga masalah
    • Di bawah: keluaran dari contoh kode sebelumnya — termasuk stack trace
For input string: "one"
java.lang.NumberFormatException: For input string: "one"
    at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
    at java.base/java.lang.Integer.parseInt(Integer.java:661)
    at java.base/java.lang.Integer.valueOf(Integer.java:988)
    at foo/exceptions.ExceptionExample.main(ExceptionExample.java:7)
Tipe Data dan Exception di Java

Ayo berlatih!

Tipe Data dan Exception di Java

Preparing Video For Download...