std::locale可以抛异常

std::locale可以抛异常,异常信息为bad locale name。
在main函数中try catch后,输出到日志,结果异常就是日志中抛出来的,于是无信息闪退。
修改后的代码如下:

 const std::locale sys_local = std::locale("");
 const std::string sys_local_name = sys_local.name();
 try
 {
  std::locale::global(std::locale("chs")); //日志主要给编程者看,考虑固定为chs。
 }
 catch (std::exception &e)
 {
  std::locale::global(sys_local);
 }

举一反三,std的异常,能处理的尽量处理。否则可能很难调查。
例如某程序在win xp en环境程序闪退,没有简单办法建立开发环境获得崩溃信息,实际与此异常有关。
win xp en环境不支持chs local,所以闪退,如果设置失败就恢复为系统默认编码就可以正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值