Tukar Pernyataan tanpa Putus
Ralat berlaku apabila penyataan suis kekurangan penyataan putus antara kes. Pertimbangkan coretan kod berikut:
switch (x) { case 0: // code case 1: // code case 2: // code }
Penjelasan
Pernyataan suis Java memerlukan pernyataan putus untuk mengasingkan kes. Tanpa rehat, kod dalam kes berikutnya dilaksanakan walaupun keadaan sepadan dengan kes sebelumnya. Dalam contoh di atas, jika x ialah 1, kedua-dua kes 1 dan 2 akan dilaksanakan.
Tingkah laku ini biasanya tidak disengajakan dan boleh membawa kepada logik program yang salah. Findbugs mengenal pasti kemungkinan ralat ini dan membenderakannya sebagai amaran.
Penggunaan
Pernyataan Break digunakan untuk menamatkan pelaksanaan kes dan mengelakkan kod daripada jatuh ke yang berikutnya kes. Kod berikut adalah betul dari segi tatabahasa dan hanya akan melaksanakan kod untuk kes yang sepadan:
switch (foo) { case 0: doSomething(); break; case 1: doSomethingElse(); break; default: doSomeOtherThing(); break; }
Pengecualian
Dalam senario tertentu, mungkin wajar untuk membenarkan secara sengaja kod untuk jatuh melalui kes berikutnya. Contohnya,
switch (foo) { case 0: case 1: doSomething(); break; case 2: doSomethingElse(); break; default: doSomeOtherThing(); break; }
Dalam kes ini, doSomething() akan dilaksanakan jika foo adalah sama ada 0 atau 1. Ini ialah corak biasa yang dikenali sebagai "fall-through" dan biasanya dianggap boleh diterima apabila tiada kod muncul di antara kes (cth., kes 1 dan kes 2). Kebanyakan alat analisis tidak akan membenderakan kes yang gagal sebagai ralat dalam situasi ini.
Atas ialah kandungan terperinci Mengapa Penyata Suis Memerlukan Penyata Rehat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!