Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: try catch in c++

  1. #1
    Ngày gia nhập
    09 2016
    Bài viết
    1,028

    Mặc định try catch in c++

    Mở đầu:
    C++ Code:
    1. #include <iostream>
    2. #include <stdexcept>
    3.  
    4. // Integer division, catching divide by zero.
    5.  
    6. inline int intDivEx (int numerator, int denominator) {
    7.     if (denominator == 0)
    8.         throw std::overflow_error("Divide by zero exception");
    9.     return numerator / denominator;
    10. }
    11.  
    12. int main (void) {
    13.     int i = 42;
    14.  
    15.     try {
    16.         i = intDivEx (10, 2);
    17.     } catch (std::overflow_error e) {
    18.         std::cout << e.what() << " -> ";
    19.     }
    20.     std::cout << i << std::endl;
    21.  
    22.     try {
    23.         i = intDivEx (10, 0);
    24.     } catch (std::overflow_error e) {
    25.         std::cout << e.what() << " -> ";
    26.     }
    27.     std::cout << i << std::endl;
    28.  
    29.     return 0;
    30. }
    http://stackoverflow.com/questions/6121623/catching-exception-divide-by-zero

    Phọt mô xa 2017

  2. #2
    Ngày gia nhập
    02 2014
    Nơi ở
    TP.HCM
    Bài viết
    863

    Ừ thì chia cho Zero, ngoại lệ đã chắc gí tới chương trình của chúng ta. Đây là ngắt nội bộ của CPU ở số hiệu thấp, phải nguyên một đề tài mới diễn giải nổi.

  3. #3
    Ngày gia nhập
    09 2016
    Bài viết
    1,028

    Cám ơn bác.
    Tôi không có ý chặn bắt exception Divide By Zero, số hiệu thấp đâu. Tôi chỉ phô diễn kỹ thuật nguỵ biện chứng minh 4 = 5 thôi, bác biết thì tôi mở bài.

    C++ Code:
    1. #include <iostream>
    2. #include <stdexcept>
    3.  
    4. inline int intDivEx (int numerator, int denominator) {
    5.     //if (denominator == 0) throw std::overflow_error("Divide by zero exception");
    6.     return numerator / denominator;
    7. }
    8.  
    9. int main (void) {
    10.     int i = 42;
    11.  
    12.     try {
    13.         i = intDivEx (10, 2);
    14.     } catch (std::overflow_error e) {
    15.         std::cout << e.what() << " -> ";
    16.     }
    17.     std::cout << i << std::endl;
    18.  
    19.     try {
    20.         i = intDivEx (10, 0); // has warning
    21.     } catch (std::overflow_error e) {
    22.         std::cout << e.what() << " -> ";
    23.     }
    24.     std::cout << i << std::endl;
    25.  
    26.     return 0;
    27. }

    Có cảnh báo, TBD xử lý sao đó, nó chạy OK (phần excB.cpp - has warning):
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		_Dbz_A.jpg
Lần xem:	4
Size:		123.3 KB
ID:		51764
    Còn bật tắt cảnh báo, thì bó tay (phần excC.cpp - stop warning)

    C++ Code:
    1. #include <iostream>
    2. #include <stdexcept>
    3.  
    4. inline int intDivEx (int numerator, int denominator) {
    5.     //if (denominator == 0) throw std::overflow_error("Divide by zero exception");
    6.     return numerator / denominator;
    7. }
    8.  
    9. int main (void) {
    10.     int i = 42;
    11.  
    12.     try {
    13.         i = intDivEx (10, 2);
    14.     } catch (std::overflow_error e) {
    15.         std::cout << e.what() << " -> ";
    16.     }
    17.     std::cout << i << std::endl;
    18.  
    19.     try {
    20.         int d = 2 * 3 - 6;
    21.         i = intDivEx (10, d); //stop warning
    22.     } catch (std::overflow_error e) {
    23.         std::cout << e.what() << " -> ";
    24.     }
    25.     std::cout << i << std::endl;
    26.    
    27.     return 0;
    28. }

    Phọt mô xa 2017

  4. #4
    Ngày gia nhập
    08 2017
    Bài viết
    1,776

    C++ Code:
    1. #include <iostream>
    2. #include <Windows.h>
    3. using namespace std;
    4.  
    5. int Divide(int a, int b){
    6.     if(b == 0)
    7.         throw "Divide by zero!";
    8.     return a/b;
    9. }
    10. int main () {
    11.     int a, b;
    12.     cout << "Tinh a/b\n";
    13.     cout << "Nhap a = "; cin >> a;
    14.     cout << "Nhap b = "; cin >> b;
    15.     //
    16.     cout << "\nket qua a/b = ";
    17.     try{
    18.         cout << Divide( a, b);
    19.     }
    20.     catch(const char* msg){
    21.         cerr << msg << endl; //Console
    22.         MessageBox(0, msg, "error", 0); //Window
    23.     }
    24.    
    25.     cout << "\nDone\n";
    26.     return 0;
    27. }

    Biên dịch (try_B.cpp ==> try_B.exe trên cmd với vc):
    cl /EHsc user32.lib try_B.cpp

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn