c++ - 异常是返回不同类型的合理方式吗?
问题描述
我一直在想:由于异常可以是任何类型,它们是否可以根据条件返回不同的类型?
我知道这不是很清楚,所以我举个例子:对于消息传递应用程序,我们希望用户能够发送他们的位置,但出于隐私原因,我们希望它仅在用户在线时显示:
void get_user_position(User& u) {
if(!u.is_online()) throw false;
else throw u.get_position();
}
void send_user_position(User& u) {
try {
get_user_position(u);
} catch(bool e) {
//send a message like "user isn't online"
} catch(user_position e) {
//send the position
}
}
这将避免需要-1
s 作为失败的操作标志和类似的东西。想法?意见?我完全错过了什么吗?
解决方案
绝对不。你不会把剑带到桌子上切菜。在这种情况下,它甚至不是剑。它是一把刷子。
开个玩笑,看看你想做什么,这意味着你已经知道返回值的可能类型是什么。既然如此,请使用std::variant。
推荐阅读
- java - 我想在片段中添加秒表,但应用程序在单击图像按钮时崩溃。如何解决?
- jquery - 单击事件调用(按键)不起作用
- cookies - 谷歌云 CDN 变化:cookie 响应永远不会被缓存命中
- mysql - 如何解决 phpmyadmin 错误?
- javascript - JS - 在画布中围绕鼠标位置制作一个hitbox?
- android - 如何在android中的矩形视图上实现圆角三角形
- c# - Xamarin Forms:加载使用列表视图的 REST API OnItemSelected 的详细信息页面
- node.js - NodeJS 未将 POST 正文发布到 DataDog 日志
- c# - ASP.NET CORE MVC - 来自其他休息的令牌 - 身份验证属性
- node.js - MongoDb:存储时间范围的最佳方式