我的尝试将零部门有问题吗?

Is there something wrong with my try catch zero division?

本文关键字:零部 有问题 我的      更新时间:2023-10-16

我试图通过使int划分为零的函数来制作简单的程序来捕获和错误,但我看不到错误,既没有正确的输出

#include <iostream>
constexpr double division(int a, int b){
    if(b == 0)
        throw "Cannot be divides by  zero";
    return (a / b);
}

int main(){
    int x {50};
    int y {0};
    int z {0};
    z = x / y;
    try{
        z = division(x ,y);
        std::cout << z << std::endl;
    }catch (const char* msg) {
     std::cerr << msg << std::endl;
    }
    return 0;
}
 C:UsersTungkiDesktopc>g++ jj.cc
 C:UsersTungkiDesktopc>a
 C:UsersTungkiDesktopc>

您可以看到这里什么都没有发生

int x {50};
int y {0};
int z {0};
z = x / y; <<<<<<<<<<< divide by 0

未执行后的代码(未定义的行为(,可能您不想使用'/'而不是使用函数; - (

z = x / y;评论置于评论中,您会得到预期的行为:

#include <iostream>
constexpr double division(int a, int b){
    if(b == 0)
        throw "Cannot be divides by  zero";
    return (a / b);
}

int main(){
    int x {50};
    int y {0};
    int z {0};
    // z = x / y;
    try{
        z = division(x ,y);
        std::cout << z << std::endl;
    }catch (const char* msg) {
     std::cerr << msg << std::endl;
    }
    return 0;
}

汇编和执行:

pi@raspberrypi:/tmp $ g++ -pedantic -Wall -Wextra d.cc
pi@raspberrypi:/tmp $ ./a.out
Cannot be divides by  zero