引发异常并直接结束程序的自定义异常处理
custom exception handling that throws exception and ends the programme directly
下面是给定的代码。我想要的是,如果 throw 的条件匹配(这里除以零),程序应该在给出我想要的那种异常后直接终止(这里是"分母零!通常,这可以通过编写 throw 语句(无需编写 catch 语句)来完成,但它的结束方式令人不安,因为 IDE(在我的例子中是日食)显示一个弹出窗口,告诉"program_name.exe停止工作"在窗口 PC 中。有没有更好的方法可以在抛出异常后结束程序,该异常应该出现在输出窗口本身中,而不会出现这些看起来不寻常的弹出窗口?(可能是自定义异常格式会更好)
#include <iostream>
#include <string>
using namespace std;
double div(double num, double denom)
{
double result = 0.0;
try
{
if(denom == 0)
throw "denominator zero!n";
result = num/denom;
}
catch(const char* e)
{
cout<<e<<endl;
}
return result;
}
int main()
{
double a = 5.0;
double b = 0.0;
cout<<div(a,b);
return 0;
}
将
错误字符串输出到 std::cerr,然后
exit(0);
应该做这项工作。因为通常,如果返回代码与零不同,IDE 会发出此类警告。
这样做的方法是在main中编写一个try ... catch
块。
int main() {
double a = 5.0;
double b = 0.0;
try {
std::cout << div(a,b);
} catch(const char*msg) {
std::cout << msg << 'n';
return EXIT_FAILURE;
}
return 0;
}
现在,在div
函数中,不要使用 try ... catch
。只需抛出异常。
相关文章:
- 如何创建从Maya(或类似程序)到虚幻引擎的自定义数据导出插件
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 在自定义程序中使用本机 Windows 自然顺序排序
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 有没有办法为macOS上的C++程序指定自定义语言环境目录
- 在unique_ptr<>中使用自定义删除程序 (curl_formfree())
- (Wix 安装程序)如何包含自定义操作依赖项
- boost::asio 中的自定义处理程序
- 从 ParaView 构建自定义 Qt 应用程序示例时出错
- 在程序执行期间从标准输出重定向到自定义流
- shared_ptr的删除程序是否存储在自定义分配器分配的内存中?
- 带有log4cxx的自定义和动态附加程序的配置
- 如何使用自定义对象的序列化在 c++ 中编写自定义二进制文件处理程序
- 用于unique_ptr的有状态自定义删除程序
- 为什么无法在 Cocoa 应用程序调用的 C++ func 中嵌入自定义 Python 模块
- 无法弄清楚如何让 CMake 为自定义 clang 驱动程序拉入正确的标头
- 为什么unique_ptr不能阻止自定义删除程序的切片?
- r-工作程序中对自定义函数的未定义引用(C++和RcppParallel)
- glib:在另一个线程上处理自定义 GMainContext* 循环,不引发信号处理程序
- 自定义OpenVR驱动程序,具有抖动的Android旋转