Tugas Anda adalah menghasilkan pengecualian null-pointer. Yaitu, program Anda harus menerima nilai yang diharapkannya bukan nol, dan melemparkan pengecualian / kesalahan atau macet karena nilainya nol.
Selain itu, tidak dapat dengan jelas membaca kode bahwa nilainya nol. Tujuan Anda adalah membuatnya tampak jelas bagi pembaca bahwa nilainya bukan nol, meskipun sebenarnya demikian.
- Alih-alih nol, Anda dapat menggunakan nihil, tidak ada, tidak ada, atau apa pun yang setara dalam bahasa Anda. Anda juga dapat menggunakan undefined, uninitialized, dan sebagainya.
- Masalah dengan kode Anda harus bahwa variabel tersebut (secara mengejutkan) adalah nol di mana program mengharapkan variabel yang bukan nol.
- Program Anda dapat merespons nol dengan melempar pengecualian, melempar kesalahan, menabrak, atau apa pun yang biasanya dilakukannya ketika null yang tidak terduga ditemukan.
Ini adalah kontes popularitas, jadi cerdaslah!
popularity-contest
underhanded
Ypnypn
sumber
sumber
Jawaban:
Jawa
Mari kita hitung nilai absolut suatu angka. Java memiliki Math.ab untuk tujuan ini, namun angka yang kita gunakan terkadang nol. Jadi kita membutuhkan metode pembantu untuk menangani kasus itu:
Jika x adalah nol, kembalikan nol, kalau tidak gunakan Math.abs ().
Kode ini sangat sederhana dan jelas, dan harusnya berfungsi dengan baik ... benar?
Omong-omong, gunakan baris ini sebagai gantinya:
bekerja dengan benar. Saya berpikir untuk membuat ini spoiler, tapi .. Saya pikir itu sama membingungkannya :)
Ok, sebuah penjelasan:
sumber
C
Setiap programmer C membuat kesalahan ini, setidaknya sekali.
Alasan:
Memperbaiki:
http://ideone.com/MbQhMM
sumber
scanf
adalah fungsi variadik, dan argumen tipe salah (int
) diberikan, saat itu diharapkanint *
. Karena C (saya tahu, kompiler dapat mendeteksi hal ini jika terjadiscanf
) tidak dapat memeriksa tipe dalam fungsi variadic, ini dengan senang hati mengkompilasi.0
memang null pointer literal, tetapi ini hanya berlaku untuk literal yang langsung digunakan itu sendiri, tanpa menyimpannya dalam variabel.n
tidak pernah berisi pointer nol.PHP
Yang ini telah menggigit saya beberapa kali.
Hasil yang diharapkan:
Hasil aktual:
alias NullPointerException
Alasan:
sumber
CoffeeScript (di Node.js)
Dalam CoffeeScript,
?
adalah operator eksistensial. Jika variabel ada, itu digunakan, jika tidak sisi kanan sedang digunakan. Kita semua tahu bahwa sulit untuk menulis program portabel. Contohnya, pencetakan dalam JavaScript berada di bawah yang ditentukan. Browser menggunakanalert
(ataudocument.write
), menggunakan shell SpiderMonkeyprint
, dan Node.js menggunakanconsole.log
. Ini gila, tetapi CoffeeScript membantu mengatasi masalah ini.Mari kita jalankan ini di bawah Node.js. Lagi pula, kami ingin memastikan skrip kami berfungsi.
Uhm, mengapa Anda mengeluh tentang itu, padahal
alert
juga tidak didefinisikan?sumber
Rubi
Temukan awk di PATH klon Unix.
Ups!
Dari kesalahan, kita tahu yang
p.find
dipanggilnil.find
, jadip
harusnil
. Bagaimana ini bisa terjadi?Di Ruby,
def
memiliki cakupan sendiri untuk variabel lokal, dan tidak pernah mengambil variabel lokal dari cakupan luar. Dengan demikian penugasanp = ENV['PATH'].split ':'
tidak dalam ruang lingkup.Variabel tidak terdefinisi biasanya menyebabkan
NameError
, tetapip
merupakan kasus khusus. Ruby memiliki nama metode globalp
. Jadip.find { ... }
menjadi pemanggilan metode, sepertip().find { ... }
. Ketikap
tidak memiliki argumen, ia kembalinil
. (Kode pegolf digunakanp
sebagai jalan pintas untuknil
.) Kemudiannil.find { ... }
naikkanNoMethodError
.Saya memperbaikinya dengan menulis ulang program dengan Python.
Berhasil!
Saya mungkin ingin mencetak
awk is /usr/bin/awk
, tetapi itu adalah bug yang berbeda.sumber
C #
With()
adalah metode ekstensi untukstring
objek, yang pada dasarnya hanya alias untukstring.Format()
.Terlihat bagus, bukan? Salah.
Sebagian besar orang yang tahu sedikit tentang spesifikasi internal bahasa mungkin akan dapat menemukan masalah dengan cukup cepat, tetapi itu masih sesuatu yang mudah dilewatkan sekilas.
sumber
.GetType()
dantypeof()
dan sehingga mengarah ke kesalahan ketika hasilnya tidak sama. Saya pikir poster itu ingin kode yang mencari bukti peluru yang tidak.return string.Format(format, args);
. Jika refleksi diperlukan (dalam kasus penggunaan lain), orang akan menggunakantypeof(string)
(menangkap kesalahan casing pada waktu kompilasi, tidak ada string ajaib), bukanGetType
metode statis . Jadi contohnya tampak "tidak realistis".Unity3D
Kemudian Anda lupa untuk menarik & melepas aset di sana dan BOOM, Unity meledak. Terjadi sepanjang waktu.
sumber
Rubi
Hanya beberapa kode sederhana untuk mengambil produk array.
sumber
for (int i = 0; i <= arr.length; i++)
di Jawa.Android
Saya melihat ini terjadi terlalu sering. Seseorang mengirimkan pesan ke aktivitas berikutnya (mungkin kode status, memetakan data, apa pun), dan akhirnya menarik nol dari
Intent
.Sekilas sepertinya cukup masuk akal. Hanya:
Dalam
MenuActivity.java
:Dalam
NextActivity.java
:FWIW, JavaDoc memang mengatakan itu
Intent.getStringExtra(String)
mungkin kembalinull
, tetapi hanya jika tag tidak ditemukan. Jelas saya menggunakan tag yang sama, jadi pasti ada yang lain ...sumber
C
Hanya membaca cepat dari buffer, di mana programmer bahkan cukup baik untuk mendokumentasikan potensi bahaya!
sumber
Nimrod
sumber
C #
Ini klasik. Metode yang sangat berguna
FindStringRepresentationOf
akan membuat instance baru dari parameter tipe yang ditentukan, kemudian menemukan representasi string dari instance itu.Tentunya akan sia-sia untuk memeriksa
null
segera setelah membuat contoh baru, jadi saya belum melakukan itu ...Setelah memperbaiki masalah seperti yang dijelaskan dalam teks tak terlihat di atas, coba juga
goodInstance.GetType()
(perbedaannya adalahGetType()
, tidak sepertiToString()
, non-virtual, sehingga mereka tidak bisaoverride
mengetiknyaNullable<>
).sumber
C ++:
Apa yang Anda harapkan adalah "Hello World!" untuk dicetak. Tetapi Anda hanya akan melihat sampah di layar.
Di sini a1 dihancurkan ketika lingkup init () selesai. Jadi a_ptr, karena menunjuk ke a1, akan menghasilkan sampah.
sumber
C
Penjelasan
sumber