Mengenai pengecualian dalam c++?
给我你的怀抱
给我你的怀抱 2017-06-30 09:57:21
0
3
1155
  1. Adakah terdapat perbezaan penting antara pengecualian yang dijana oleh penyahpepijatan biasa (seperti yang ditunjukkan dalam gambar) dan pengecualian try throw yang digunakan untuk menilai sama ada input pengguna adalah betul atau tidak, dengan kata lain, adakah mekanisme pengecualian itu? C++ sertakan yang pertama, atau adakah yang kedua?

Apakah pengecualian pertama yang dinyatakan di atas dinilai? Contohnya, pelanggaran akses dalam gambar, adakah ia dinilai oleh pengkompil atau alat lain IDE?

给我你的怀抱
给我你的怀抱

membalas semua(3)
phpcn_u1582

@Evian Apa yang awak cakap masuk akal, biar saya buat supplement

  • Pengecualian dalam c++ hanya boleh menangkap pengecualian yang dilemparkan oleh c++. Ringkasnya, ia hanya boleh menangkap pengecualian yang dilemparkan dengan sendirinya (tidak terhad kepada kod yang anda tulis, tetapi juga pustaka runtime).

  • Sebenarnya, pengecualian yang dilemparkan oleh C++ bukanlah pengecualian sebenar, kerana ia hanya ditakrifkan dan boleh diramal. Pengecualian sebenar hanya dicetuskan oleh CPU selepas pelaksanaan, iaitu pengecualian yang dilemparkan oleh perkakasan.

  • Perkakasan tidak akan peduli langsung tentang c++, ia akan diserahkan kepada sistem pengendalian untuk mengendalikannya. Memandangkan sistem pengendalian yang berbeza, pengendalian pengecualian juga tidak konsisten - tetapi mereka tidak diserahkan kepada bahasa peringkat atasan.

  • Ambil pengendalian pengecualian Windows yang agak lengkap sebagai contoh, ia akan

  1. Serahkan kepada penyahpepijat (proses mesti dinyahpepijat)

  2. Laksanakan VEH

  3. Laksanakan SEH

  4. TopLevelEH (proses tidak akan dilaksanakan apabila ia dinyahpepijat)

  5. Serahkan kepada penyahpepijat (pengendalian pengecualian di atas mengatakan ia tidak dapat dikendalikan, jadi saya menyerahkannya kepada penyahpepijat semula)

  6. Pemberitahuan port pengecualian panggilan csrss.exe

曾经蜡笔没有小新

Pelanggaran bacaan memori ditentukan oleh perkakasan dan kemudian diserahkan kepada sistem pengendalian untuk diproses. (Saya tidak tahu banyak tentang C++, tetapi ini bukan seperti pengecualian C++, tetapi pengecualian yang dilemparkan oleh Windows.)

刘奇

Saya tidak faham pendapat anda Sesetengah perpustakaan mempunyai kelas pengecualian terbina dalam, dan anda juga boleh menyesuaikan kelas pengecualian Pada akhirnya, semuanya diwarisi daripada std::exception. Selain itu, ini adalah pengecualian masa jalan dan tiada kaitan dengan pengkompil atau IDE.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan