我的尝试将零部门有问题吗?
Is there something wrong with my try catch zero division?
我试图通过使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
相关文章:
- 我似乎对if/else的基本语句有问题:/
- 我在范围内未声明的错误类有问题
- 我的C++语言蛮力算法有问题
- 我关于函数"Assert"的C++代码有问题
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- C++11 标准是否保证零值有符号整数的一元减号为零?
- C++类中的友元函数有问题?
- 我对数组即 0x6dfe78 有问题
- 我对 std::unique(算法)C++有问题
- 使用 fstream 库并在屏幕上打印的文件有问题?
- 这个模板为什么有问题?如何正确编译
- 我对 MyGraph 属性顶点名称和边权重有问题
- delete[]有问题,如何部分删除内存
- 在C++中使用exit()退出程序有问题吗
- 跳转到if(false)块有问题吗
- 查找有问题的宏
- 使用 rand() 和 srand() 有问题
- C++ 回文程序总是给出 0(假)作为输出问题;我的代码哪里有问题?
- 我在 C++ "out_of_range at memory location"有问题
- 我的尝试将零部门有问题吗?