


Adakah selamat untuk mengandaikan bahawa sebarang ralat yang dikembalikan daripada fungsi strconv.Parse* mestilah disebabkan oleh data input yang buruk?
Adakah selamat untuk mengandaikan bahawa sebarang ralat yang dikembalikan daripada fungsi strconv.Parse mestilah disebabkan oleh data input yang buruk? Soalan ini melibatkan pemahaman tentang pengendalian ralat fungsi strconv.Parse. Biasanya, ralat yang dikembalikan oleh fungsi strconv.Parse memang disebabkan oleh data input yang tidak berada dalam format yang diharapkan. Walau bagaimanapun, terdapat beberapa keadaan khusus yang perlu dipertimbangkan. Sesetengah ralat mungkin disebabkan oleh jenis data input yang salah, seperti semasa menukar rentetan kepada integer dan rentetan mengandungi aksara bukan angka. Selain itu, terdapat kes tepi, seperti limpahan integer atau kehilangan ketepatan titik terapung, yang juga boleh mengakibatkan nilai pulangan yang salah. Oleh itu, untuk ralat yang dikembalikan daripada fungsi strconv.Parse, kita tidak boleh mengandaikan sepenuhnya bahawa ia disebabkan oleh data input yang salah, tetapi perlu mempertimbangkan faktor lain yang mungkin.
Kandungan soalan
Dalam semakan kod baru-baru ini, penyemak bertanya kepada saya cara saya mengendalikan ralat daripada strconv.ParseUint()
返回的错误提出了疑问。该函数被记录为返回转换后的 uint 值和 *strconv.NumError
具体类型的错误。文档提到了可以返回的该类型的两个哨兵错误(ErrSyntax
和 ErrRange
), yang kedua-duanya bermakna ia diberi data yang salah. Bergantung pada antara muka fungsi, sebarang ralat lain juga mungkin berlaku.
Untuk kes penggunaan saya, saya perlu tahu sama ada nilai rentetan yang saya ada berbaloi untuk ditukar kepada uint. Ralat jika ParseUint
返回错误,并且它是哨兵错误之一,那么我得到了答案。但如果返回的错误不是这些,那么我返回它并停止执行。我的审阅者断言,我应该假设从 ParseUint
返回的任何错误意味着我给了它错误的数据,并且不需要检查哨兵错误,没有理由检查哨兵错误,也不会返回该错误(在我的用例中)。他们链接到 go 标准库中的一个示例,其中来自 ParseUint
dianggap sebagai semakan untuk data input yang buruk dan tidak pernah dikembalikan, menunjukkan bahawa terdapat banyak contoh perkara ini.
Walaupun saya pasti faham bahawa mesti ada algoritma yang sentiasa boleh mengira hasil yang diingini berdasarkan data yang baik dan sumber yang mencukupi, dunia sebenar tidak selalunya sepadan dengan ideal teori. Saya tidak dapat mencari apa-apa dalam dokumentasi perpustakaan yang menunjukkan bahawa ia tidak dan tidak akan mengembalikan ralat atas sebarang sebab selain daripada data yang buruk. Perpustakaan standard mempunyai satu atau mungkin banyak contoh perkara ini, yang meyakinkan di satu pihak dan menakutkan di pihak yang lain, di antara "dua kesalahan tidak menjadi betul" dan "mereka melakukannya dengan cara ini, jadi ia mesti selamat untuk kita Perkara yang sama dilakukan dalam kes ini.
Adakah ini hanya kes dokumentasi perpustakaan kehilangan ayat? Atau adakah baik untuk mengembalikan ralat apabila ia bukan salah satu daripada dua ralat ini? Bagaimana saya harus membuat alasan?
Penyelesaian
Ya, adalah selamat untuk mengandaikan bahawa ralat dalam fungsi strconv.ParseXXX
adalah disebabkan oleh data input yang buruk.
Dari halaman dokumentasi yang anda nyatakan:
Cara saya membaca ini ialah "sebarang ralat dalam strconv.ParseXXX adalah NumError
dan mungkin disebabkan oleh nombor tidak sah atau ralat julat saiz bit". Pemahaman saya ialah godocs cuba menggariskan selengkap mungkin skop yang dijangkakan bagi panggilan fungsi.
Jadi saya rasa selamat untuk menganggap bahawa ini adalah strconv.ParseXXX
hanya ralat yang mungkin anda lihat dikembalikan daripada fungsi . Jika sesuatu yang lain kembali, saya akan menganggapnya sebagai pepijat dokumentasi.
Untuk menjawab soalan terakhir anda: corak yang anda perhatikan semasa memanggil fungsi ini daripada perpustakaan standard adalah betul. Kembalikan keseluruhan ralat dan biarkan pemanggil memutuskan perkara yang perlu dilakukan dengannya. Ralat sentinel direka untuk membantu anda memahami perkara yang salah dan mewakili rangkaian penuh ralat yang boleh berlaku dengan fungsi ini.
Atas ialah kandungan terperinci Adakah selamat untuk mengandaikan bahawa sebarang ralat yang dikembalikan daripada fungsi strconv.Parse* mestilah disebabkan oleh data input yang buruk?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Di GO, fungsi INIT digunakan untuk permulaan pakej. 1) Fungsi init secara automatik dipanggil apabila permulaan pakej, dan sesuai untuk memulakan pembolehubah global, menetapkan sambungan dan memuatkan fail konfigurasi. 2) Terdapat pelbagai fungsi init yang boleh dilaksanakan dalam urutan fail. 3) Apabila menggunakannya, perintah pelaksanaan, kesukaran ujian dan kesan prestasi harus dipertimbangkan. 4) Adalah disyorkan untuk mengurangkan kesan sampingan, menggunakan suntikan ketergantungan dan penangguhan permulaan untuk mengoptimumkan penggunaan fungsi INIT.

Go'sSelectStatementStreamLinesConcurrentProgrammingByMultiPlexingOperations.1) itAllowSwaitingonMultiPlechannoPerations,

ContextandWaitGroupSarecrucialingingoformanagingGoroutinesfectively.1) ContextAllowsSignalingCancellationandDeadlinesacrosapiboundaries, memastikangoroutinescanbestplygracely.2) WaitgroupSsynchronizegoroutine, Mempersembahkan CreationAllcebeBefefeSproprophering, Preveation

Goisbeneficialformicroservicesduetoitssimplicity, kecekapan, androbustconcurrencysupport.1) go'sdesignemphasizessimplicityandeficiency, idealformicroservices.2) itsconcurrencymodelusinggoroutin

Golangisidealforbuildingscalablesystemsduetoitseficiencyandcurrency, whilepythonexcelsinquickscriptinganddataanalysisduetoitssimplicityandvastecosystem.golang'sdesignencouragescouragescouragescouragescourageSlean, readablecodeanditsouragescouragescourscean,

Golang lebih baik daripada C dalam kesesuaian, manakala C lebih baik daripada Golang dalam kelajuan mentah. 1) Golang mencapai kesesuaian yang cekap melalui goroutine dan saluran, yang sesuai untuk mengendalikan sejumlah besar tugas serentak. 2) C Melalui pengoptimuman pengkompil dan perpustakaan standard, ia menyediakan prestasi tinggi yang dekat dengan perkakasan, sesuai untuk aplikasi yang memerlukan pengoptimuman yang melampau.

Sebab -sebab memilih Golang termasuk: 1) prestasi konkurensi tinggi, 2) sistem jenis statik, 3) mekanisme pengumpulan sampah, 4) perpustakaan dan ekosistem standard yang kaya, yang menjadikannya pilihan yang ideal untuk membangunkan perisian yang cekap dan boleh dipercayai.

Golang sesuai untuk pembangunan pesat dan senario serentak, dan C sesuai untuk senario di mana prestasi ekstrem dan kawalan peringkat rendah diperlukan. 1) Golang meningkatkan prestasi melalui pengumpulan sampah dan mekanisme konvensional, dan sesuai untuk pembangunan perkhidmatan web yang tinggi. 2) C mencapai prestasi muktamad melalui pengurusan memori manual dan pengoptimuman pengkompil, dan sesuai untuk pembangunan sistem tertanam.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Dreamweaver Mac版
Alat pembangunan web visual

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.
