【发布时间】:2013-12-20 18:15:03
【问题描述】:
所以我正在尝试将整数转换为十六进制,并且我将非 int 类型以及负数放入输入变量中。当我添加抛出代码时,它会失败。没有 throw 它将永远循环。我是否抛出了错误的抛出论点?我的 if 语句将如何处理非 int 类型,例如 a、b car 到 num 变量中?
cout<<"please enter integer number to be converted to binary (less than 65536) "<<endl;
cin>>num;
if (num <=0)
{
throw invalid_argument("wrong input");
}
else
cout << num + 1;
【问题讨论】:
-
嗯?这里没有循环。
-
如果不是结构化输入,使用流操作符是一个糟糕的选择,因为它们会默默地失败
-
异常是针对异常情况而不是一般错误处理。
-
@CaptainObvlious:试着告诉核心 Java 的作者 ;) (docs.oracle.com/javase/7/docs/api/java/lang/…)
-
使用此页面:cplusplus.com/reference/istream/istream/operator%3E%3E 在输入无法解析为您期望的类型时在故障位上设置异常