Pertanyaan Apa perbedaan antara kesalahan run-time dan kesalahan kompilator? [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Dalam salah satu slide prof saya tentang ploymorphism, saya melihat potongan kode ini dengan beberapa komentar:

discountVariable =              //will produce
  (DiscountSale)saleVariable;//run-time error
discountVariable = saleVariable //will produce
                                //compiler error

Seperti yang Anda lihat, ia mengatakan dalam pernyataan casting pertama yang akan dihasilkannya run-time kesalahan dan di yang lain dikatakan itu akan menghasilkan kesalahan kompilator.

Apa yang membuat kesalahan ini? dan bagaimana mereka berbeda satu sama lain?


36
2018-02-27 20:31


asal


Jawaban:


Kesalahan waktu proses hanya akan terjadi ketika kode benar-benar berjalan. Ini adalah yang paling sulit - dan menyebabkan crash program dan bug dalam kode Anda yang dapat sulit untuk dilacak.

Contoh mungkin mencoba mengubah string: "hello" menjadi integer:

string helloWorld = "hello";
int willThrowRuntimeError = Convert.ToInt32(helloWorld);

Compiler mungkin tidak melihat ini sebagai masalah tetapi ketika menjalankan kesalahan akan dilemparkan.

Kesalahan kompiler adalah karena ketidakakuratan dalam kode, di mana kompiler melemparkan kesalahan untuk mengingatkan Anda pada sesuatu yang tidak akan dikompilasi, dan karena itu tidak dapat dijalankan.

Contoh kesalahan kompiler adalah:

int = "this is not an int";

Semoga itu membantu.


37
2018-02-27 20:38



Kesalahan runtime terjadi selama menjalankan program. Kesalahan kompiler terjadi ketika Anda mencoba untuk mengkompilasi kode.

Jika Anda tidak dapat mengkompilasi kode Anda, itu adalah kesalahan kompilator.

Jika Anda mengkompilasi dan menjalankan kode Anda, tetapi kemudian gagal selama eksekusi, itu adalah runtime.


12
2018-02-27 20:33



Kompilasi kesalahan waktu mengacu pada sintaks dan semantik. Misalnya, jika Anda melakukan operasi yang melibatkan berbagai jenis. Ex: menambahkan string dengan int, atau membagi string dengan nyata. (Baca paragraf terakhir Engkau !!!)

Jalankan kesalahan Waktu adalah mereka yang terdeteksi ketika program dijalankan. Misalnya, pembagian dengan nol. Compiler tidak dapat mengetahui apakah operasi x / a-b akan mengarah ke pembagian dengan nol hingga eksekusi.

Ini sangat luas penjelasan. Ada banyak kompiler pintar, dan, juga, dimungkinkan untuk melakukan casting internal di antara berbagai jenis yang mengarah ke operasi yang masuk akal. Itu mungkin untuk mengkompilasi kode dan melihat beberapa menjalankan kesalahan waktu bahkan jika kode tidak dieksekusi.

Lihat tautan ini juga: Runtime vs Compile time


5
2018-02-27 20:37



Kesalahan waktu kompilasi adalah kesalahan sintaks dan semantik.

Jalankan kesalahan waktu adalah kesalahan logika terutama. Karena sesuatu yang diabaikan programmer, program crash misalnya. pembagian dengan 0, mengakses variabel tanpa menginisialisasi pertama, dll.


2
2018-06-08 07:03



Kompilasi Kesalahan waktu berarti bahwa Compiler mengetahui hal itu discountVariable = saleVariable harus diakhiri dengan titik koma seperti di bawah inidiscountVariable = saleVariable;jadi itu akan melemparkan kesalahan ketika Anda mengkompilasi kode.

Jalankan Kesalahan waktu berarti kesalahan akan terjadi pada waktu berjalan, karena meskipun Anda mentransmisi penjualanVariabel menjadi diskonVariabel, pemain tidak dapat mengambil karena mereka berbeda dalam jenis.


2
2018-02-27 20:33



Ini karena compiler tidak mengetahui jenis objek "saleVariable" hingga nilai tersebut benar-benar telah ditetapkan ketika program sedang berjalan.

Anda memaksa apa pun yang ada dalam penjualanVariabel ke dalam jenis DiskonSale ini dianggap tidak aman dan tidak dapat dievaluasi sampai waktu proses.


1
2018-02-27 20:33



pikir Anda sudah mendapat gambaran umum tentang apa bedanya. Khususnya dalam kode yang telah Anda tunjukkan di OP,

  • Dalam pernyataan kedua, kompiler membandingkan tipe pada LHS dan RHS dan tidak menemukan kemungkinan implisit sehingga memberikan kesalahan.
  • Pernyataan pertama dilihat oleh compiler sebagai yang sama, tetapi di sini programmer secara eksplisit melemparkan tipe, yang sama baiknya dengan memberitahu compiler bahwa saya tahu apa yang saya lakukan dan tentu saja kompilator mempercayai Anda dan tidak memberi Anda kesalahan.

1
2018-02-27 20:50



Jika Anda menggunakan Google, Anda akan mendapatkan ini:

Kompilasi kesalahan waktu adalah semua jenis kesalahan yang mencegah kompilasi program java seperti kesalahan sintaks, kelas tidak ditemukan, nama file yang buruk untuk kelas yang ditentukan, kemungkinan kehilangan presisi ketika Anda mencampur berbagai tipe data java dan sebagainya.

Kesalahan runtime berarti kesalahan yang terjadi, ketika program sedang berjalan. Untuk mengatasi kesalahan semacam ini java mendefinisikan Exceptions. Pengecualian adalah objek yang mewakili kondisi abnormal dalam aliran program. Ini bisa dicentang atau tidak dicentang.

http://wiki.answers.com/Q/Difference_between_run_time_error_and_compile_time_error_in_java


0
2018-02-27 20:32



Kesalahan kompiler adalah karena ketidakakuratan dalam kode, di mana kompiler melemparkan kesalahan untuk mengingatkan Anda pada sesuatu yang tidak akan dikompilasi, dan karena itu tidak dapat dijalankan.

Ex: - MethodOverloading

class OverloadingTest {
    void sum(int a, long b) {
        System.out.println("a method invoked");
    }

    void sum(long a, int b) {
        System.out.println("b method invoked");
    }

    public static void main(String args[]) {
        OverloadingTest obj = new OverloadingTest();
        obj.sum(200, 200);// now ambiguity
    }
}

Jalankan Kesalahan waktu adalah kesalahan yang terdeteksi ketika program dijalankan. Misalnya, pembagian dengan nol. Compiler tidak dapat mengetahui apakah operasi x / a-b akan mengarah ke pembagian dengan nol hingga eksekusi


0
2018-04-21 08:48



Kompilasi / Kompilasi waktu / Sintaksis / Galat semantik: Kompilasi atau kesalahan waktu kompilasi adalah kesalahan yang terjadi karena kesalahan mengetik, jika kita tidak mengikuti sintaks dan semantik yang tepat dari bahasa pemrograman apa pun maka kompilasi kesalahan waktu dilempar oleh kompilator. Mereka tidak akan membiarkan program Anda mengeksekusi satu baris sampai Anda menghapus semua kesalahan sintaks atau sampai Anda men-debug kesalahan waktu kompilasi.
Contoh: Tidak ada titik koma di C atau salah ketik int sebagai Int.

Runtime errors: Runtime errors adalah kesalahan yang dihasilkan ketika program sedang berjalan. Jenis kesalahan ini akan menyebabkan program Anda berperilaku tak terduga atau bahkan mungkin membunuh program Anda. Mereka sering disebut sebagai Pengecualian.
Contoh: Misalkan Anda membaca file yang tidak ada, akan menghasilkan kesalahan runtime.

Baca lebih lanjut tentang semua kesalahan pemrograman sini


0
2018-05-25 05:37