[英]Is there something wrong with my try catch zero division?
我試圖通過使將整數除以零的函數來制作一個簡單的程序來捕獲並出錯,但是我既看不到錯誤,也不知道正確的輸出
#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:\\Users\\Tungki\\Desktop\\c>g++ jj.cc C:\\Users\\Tungki\\Desktop\\c>a C:\\Users\\Tungki\\Desktop\\c>
如您所見,這里什么也沒有發生
在做
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.