cari

Rumah  >  Soal Jawab  >  teks badan

Mengenai pengecualian dalam c++?

  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?

给我你的怀抱给我你的怀抱2735 hari yang lalu1159

membalas semua(3)saya akan balas

  • phpcn_u1582

    phpcn_u15822017-06-30 09:59:21

    @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

    balas
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-30 09:59:21

    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.)

    balas
    0
  • 怪我咯

    怪我咯2017-06-30 09:59:21

    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.

    balas
    0
  • Batalbalas