de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 user2522281
user2522281
Question

Java Bagaimana Anda mengembalikan nilai dari try, catch, dan finally?

Jadi ketika saya melakukan kode blok di dalam "try{}}", dan saya mencoba mengembalikan nilai, yang keluar adalah " tidak ada nilai yang dikembalikan". Ini adalah kode yang saya gunakan yang mewakili masalah saya.

import org.w3c.dom.ranges.RangeException;

public class Pg257E5 
{
public static void main(String[]args)
{

    try
    {
        System.out.println(add(args));
    }
    catch(RangeException e)
    {
        e.printStackTrace();
    }
    finally
    {
        System.out.println("Thanks for using the program kiddo!");
    }

}
public static double add(String[] values) // shows a commpile error here that I don't have a return value
{
    try
    {
        int length = values.length;
        double arrayValues[] = new double[length];
        double sum =0;
        for(int i = 0; i<length; i++)
        {
            arrayValues[i] = Double.parseDouble(values[i]);
            sum += arrayValues[i];
        }

        return sum; // I do have a return value here. Is it because if the an exception occurs the codes in try stops and doesn't get to the return value?
    }
    catch(NumberFormatException e)
    {
        e.printStackTrace();
    }
    catch(RangeException e)
    {
        throw e;
    }
    finally
    {
        System.out.println("Thank you for using the program!");// so would I need to put a return value of type double here?
    }

}
}

Pada dasarnya, pertanyaan yang saya miliki adalah "Bagaimana Anda mengembalikan nilai saat Anda menggunakan blok coba dan tangkap?

16 2013-07-01T13:31:45+00:00 3
Pemrograman
exception
java
try-catch
double
return-value
Pertanyaan ini memiliki :value jawaban dalam bahasa Inggris, untuk membacanya masuk ke akun Anda.
Solution / Answer
Uwe Plonus
Uwe Plonus
1 Juli 2013 в 1:36
2013-07-01T13:36:07+00:00
Lebih
Sumber
Sunting
#19798887

Untuk mengembalikan nilai ketika menggunakan try/catch, Anda dapat menggunakan variabel sementara, misalnya

public static double add(String[] values) {
    double sum = 0.0;
    try {
        int length = values.length;
        double arrayValues[] = new double[length];
        for(int i = 0; i < length; i++) {
            arrayValues[i] = Double.parseDouble(values[i]);
            sum += arrayValues[i];
        }
    } catch(NumberFormatException e) {
        e.printStackTrace();
    } catch(RangeException e) {
        throw e;
    } finally {
        System.out.println("Thank you for using the program!");
    }
    return sum;
}

Atau Anda harus memiliki return di setiap jalur eksekusi (blok try atau blok catch) yang tidak memiliki throw.

Uwe Plonus
Uwe Plonus
Jawaban edit 12 Juli 2018 в 9:53
25
0
 Dynomyte
Dynomyte
1 Juli 2013 в 1:38
2013-07-01T13:38:14+00:00
Lebih
Sumber
Sunting
#19798888

Ini karena Anda berada dalam pernyataan try. Karena bisa saja terjadi kesalahan, jumlah mungkin tidak diinisialisasi, jadi letakkan pernyataan return Anda di blok finally, dengan begitu pasti akan dikembalikan.

Pastikan bahwa Anda menginisialisasi sum di luar try/catch/finally sehingga sum berada dalam scope.

2
0
 Tala
Tala
1 Juli 2013 в 1:34
2013-07-01T13:34:33+00:00
Lebih
Sumber
Sunting
#19798886

Masalahnya adalah apa yang terjadi ketika Anda mendapatkan NumberFormatexception dilemparkan? Anda mencetaknya dan tidak mengembalikan apapun.

Catatan: Anda tidak perlu menangkap dan melempar Exception kembali. Biasanya dilakukan untuk membungkusnya atau mencetak stack trace dan mengabaikannya.

catch(RangeException e) {
     throw e;
}
 Tala
Tala
Jawaban edit 1 Juli 2013 в 1:40
1
0
Related communities 3
Programmer JAVA indonesia
Programmer JAVA indonesia
1 201 pengguna
Buka telegram
jvmusergroup
jvmusergroup
277 pengguna
Bismillahirrohmanirohim. Perhatian! Grup ini merupakan ekspansi dari grup Forum Java Programmer Indonesia di Facebook. Silahkan berbagi pengalaman dan masalah seputar Java dan keluarganya. https://t.me/JVMIndonesia Admin : @hendisantika34
Buka telegram
Java Indonesia🇲🇨
Java Indonesia🇲🇨
144 pengguna
Programmer Java Indonesia. Grup ini digunakan untuk bertanya terkait materi belajar Java / fullstack Warning=> -dilarang promosi(izin adm -18+🔞 - berbicara sopan - no spam /boot Mohon ikut aturan grup belum di keluarkan
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Roxana Elizabeth CASTILLO Avalos
Terdaftar 4 hari yang lalu
2
Hideo Nakagawa
Terdaftar 5 hari yang lalu
3
Sergiy Tytarenko
Terdaftar 6 hari yang lalu
4
shoxrux azadov
Terdaftar 1 minggu yang lalu
5
Koreets Koreytsev
Terdaftar 1 minggu yang lalu
ID
JA
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi