CodeGym /Java Blog /Acak /Kesalahan Kode Pernyataan Tidak Terjangkau di Jawa
John Squirrels
Level 41
San Francisco

Kesalahan Kode Pernyataan Tidak Terjangkau di Jawa

Dipublikasikan di grup Acak
Pernyataan kode yang tidak dapat dijangkau adalah masalah umum di kalangan pemula Java. Banyak pengembang pemula mengacaukan kesalahan dengan "kode mati" - fenomena terkait Java lainnya. Meski keduanya mirip secara manifestasi, ada beberapa perbedaan yang akan kami bahas di postingan ini. Selain itu, Anda akan mengetahui apa alasan paling umum mengapa kompiler Anda mengembalikan pernyataan kode yang tidak dapat dijangkau dan menemukan beberapa perbaikan mudah untuk membuat kode Anda aktif dan berjalan kembali.

Apa itu Kode yang Tidak Dapat Dijangkau?

Menurut definisi, pernyataan yang tidak dapat dijangkau adalah pernyataan yang tidak akan dieksekusi oleh kompiler saat Anda menjalankan kode siap pakai. Pernyataan pengembalian kode yang tidak dapat dijangkau biasanya merupakan tanda kesalahan logis dalam program. Meskipun ada beberapa alasan mengapa Anda berakhir dengan pernyataan seperti itu, dalam semua kasus, kode yang tidak dapat dijangkau adalah mubazir, mengacaukan program Anda, dan harus dihindari dengan cara apa pun.

Kode Tidak Terjangkau vs Kode Mati

Dalam komunitas pengembangan, konsep kode "tidak dapat dijangkau" dan "mati" secara praktis identik. Namun, jika Anda cerewet saat membaca dokumentasi, Anda mungkin melihat bahwa pedoman pengembangan sering menyebutkan keduanya secara terpisah. Apakah ada perbedaan antara kode mati dan tidak terjangkau? Pada dasarnya, perbedaan antara kedua kesalahan tersebut terletak pada cara kompiler bereaksi terhadapnya. Jika kode yang Anda masukkan di kompiler tidak dapat dijangkau , Anda akan mendapatkan kesalahan runtime kompilasi di notifikasi Java. Jika pernyataan Anda adalah “ kode mati ”, tidak akan ada kesalahan runtime - pengembang akan mendapatkan peringatan sistem berikut:

class DeadCode {
    void deadcode_Method(boolean b) {
    System.out.println("Reachable statement");
        if(true) {
        return;
        }
    System.out.println("Unreachable statement"); // dead code
    }
}
Karena tidak ada kesalahan kompiler langsung dalam kasus kode mati, lebih sulit untuk dideteksi. Namun, jika Anda terus melacak pengembalian System.out.printIn dengan hati-hati , menangkap kode mati seharusnya tidak menyebabkan masalah bagi Anda.

Mengapa Anda Mendapatkan Pernyataan Kode yang Tidak Dapat Dijangkau

Kabar baiknya adalah, mudah untuk melacak penyebab masalah kode yang tidak dapat dijangkau. Ada tiga alasan utama mengapa kompiler Anda terus menampilkan kesalahan:
  • Pernyataan pengalihan. Jika Anda memecahkan kode Anda dengan pernyataan return, tidak ada yang akan dieksekusi setelah "return = true".
  • Infinite loop - tidak ada kode yang Anda tulis setelah infinite loop yang akan dieksekusi karena sistem akan terus mengulang tindakan loop. Jadi, saat mengonversi kode Anda dalam kode byte, kompiler akan mengirimkan kesalahan kode yang tidak dapat dijangkau.
Untuk membantu Anda menandai dan memperbaiki masalah ini, mari kita perbesar.

Pernyataan kembali

Pernyataan pengembalian adalah bagian dari grup kata kunci Transfer, artinya pernyataan itu mengakhiri metode Anda. Sangat membantu untuk memisahkan fungsi dan membantu menjaga kode Anda tetap terbaca dan bersih. Namun, karena Anda tidak dapat menambahkan pernyataan baru ke fungsi setelah return = true, mencoba melanjutkan fungsi setelah kata kunci akan memberi Anda kesalahan kompiler "Kode tidak terjangkau". Mari kita lihat contoh kesalahan penanganan “return = true” dan cara kompiler bereaksi terhadapnya.

class GFG {
    public static void main(String args[])
    {
  
        System.out.println("My code will run");
  
        return;
  
        // ironically, this code will never run
        // here’s an unreachable code message a developer gets.
        System.out.println("My code will run");
    }
}
Beginilah cara penyalahgunaan pernyataan pengembalian akan ditampilkan di kompiler:

prog.java:11: error: unreachable statement
System.out.println(“My code will run”);
^
1 error
Untuk memperkuat apa yang Anda pelajari, kami sarankan Anda menonton video pelajaran dari Kursus Java kami

Pernyataan istirahat

Pernyataan break adalah jenis kata kunci lain yang perlu Anda perhatikan saat menulis fungsi Java. Menurut definisinya, kata kunci break digunakan untuk mengakhiri sebuah loop. Dalam contoh di bawah ini, saat pengembang keluar dari loop, dia tidak lagi dapat mengeksekusi pernyataan pada baris 8 - dengan demikian, kompiler akan menampilkan kesalahan pernyataan yang tidak dapat dijangkau. Berikut adalah contoh kode yang akan menghasilkan pernyataan kode yang tidak dapat dijangkau:

public class JavaCodeGeeks
     {
    public static void main(String[] args) {
     for(int i=1;i<5;i++)
        {
        System.out.println(i);
        break;
        System.out.println("Code after break");
        }
    }
}
Melihat kesalahan dari sudut pandang kompiler, Anda akan mendapatkan pernyataan kesalahan berikut.

JavaCodeGeeks.java:8: error: unreachable statement
System.out.println("After break");
                ^
1 error

Lanjutkan pernyataan

Lanjutkan adalah kata kunci kontrol loop yang digunakan untuk mengulangi tindakan. Setiap kali Anda ingin eksekusi loop dimulai dari awal dengan sendirinya, tambahkan continue ke kode Anda. Pernyataan tersebut berguna untuk membantu pengembang memilih pernyataan loop mana yang ingin mereka ulangi dan yang tidak akan mereka masukkan ke dalam iterasi. Meskipun continue adalah kata kunci yang mudah digunakan, tidak memiliki pemahaman penuh tentang cara kerjanya mengarahkan pengembang ke jebakan "kode yang tidak dapat dijangkau". Karena, setelah menemukan sebuah continue, sebuah sistem akan mengulangi perulangan tersebut, kata kunci tidak akan dapat mencapai pernyataan yang mengikutinya. Katakanlah, Anda memiliki kode berikut:

public class JavaIsFun
{
    public static void main(String[] args) {
        for(int i=0;i<8;i++)
        {
            System.out.println(i);
            if(i==5)
            {
                continue;
                System.out.println("Coding after continue");
            }
        }
    }
}
Sistem tidak akan menjalankan pernyataan "Coding after continue" Anda - compiler akan segera memberi tahu Anda tentang hal itu.

JavaIsFun.java:10: error: unreachable statement
                                System.out.println("Coding after continue");

Loop tak terbatas

Skenario yang mirip dengan contoh kasus penggunaan kata kunci "break" dan "continue" adalah loop tak terbatas. Saat mendesain loop tak terbatas, pengembang harus ingat bahwa tidak ada pernyataan setelahnya yang akan dijalankan. Jadi, jika Anda tidak memutus loop, semua kode yang ditulis setelahnya tidak akan dapat dijangkau. Berikut adalah contoh menarik dari kesalahan penanganan infinite loop untuk dilihat:

public class JavaCodeGym
{
    public static void main(String[] args) {
        while(true)
        {
            System.out.println("Hey there");
        }
        System.out.println("Nice to see you");
    }
}
Bisakah Anda menebak di mana kesalahan itu bersembunyi? Kompiler akan langsung menunjuknya setelah Anda menjalankan kode Anda:

//unreachable code statement compiler error
JavaCodeGym.java:10: error: unreachable statement
                System.out.println("Nice to see you");
‘
Karena ada infinite loop sebelum "Nice to see you" , pernyataan tersebut tidak akan pernah dijalankan dan terus mengembalikan kesalahan kode yang tidak dapat dijangkau.

Kesimpulan

Untuk menghindari kode yang tidak dapat dijangkau, Anda perlu memastikan ada aliran ke semua pernyataan sistem Anda. Sebagian besar masalah kode Java yang tidak dapat dijangkau berkaitan dengan penanganan kata kunci dan pengelolaan loop yang buruk. Pada akhirnya, memeriksa ulang kode Anda adalah satu-satunya cara yang terbukti benar untuk menghindari kesalahan kode yang tidak dapat dijangkau. Anda juga tidak boleh berkecil hati oleh mereka - kebiasaan membuat kode Java yang lancar datang dengan pengalaman dan praktik bertahun-tahun. Jadi, mari gunakan IDE dan mulai membuat produk perangkat lunak yang luar biasa.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION