【質問】(c++今日はじめました)
例えば、string→intの際、intの許容量を超える場合に皆様はどのように対策されていますか?
【求動作】
"intの許容量を超えているため"ということがわかるエラーを出力したいです。
(方法があれば変換前にチェックするでも、例外処理を拾うでも)
初心者ゆえ視野が狭いので、求動作以外にも、私はこうしてますという意見も募集です。
【例外処理例】
string str = 2147483648; // intの許容量を超える int i = std::stoi(str);
【やってみたこと】
試しにtry文を書いてみましたが、以下のエラーを吐きcatchできません。
可能なら、エラー内容1の様な情報が得られると嬉しいです。。。
--ソース一部
string str; cin >> str; try { cout << std::stoi(str) * 2 << endl; } catch (char *e) {> // これだとハンドルできない // 引数に...を指定すればそのcatchがハンドルするけど・・・ }
--エラー内容1(VisualStudio2015でデバッグ実行したとき)
${アドレス1} で例外がスローされました (ConsoleApplication1.exe 内): Microsoft C++ の例外: std::out_of_range (メモリの場所 ${アドレス2})
--エラー内容2(デバッグ実行しなかったとき)
Debug Error!
Program:
...${実行ファイルのアドレス}
abort() has been called
(Press Retry to debug the application)
【環境】
OS:windows7 64bit
処理系:Visual C++
IDE:VisualStudio2015
【余談】
例えば、javaのtry文では特定の拡張されたExceptionクラスを指定しなくともとりあえずExceptionを指定しておけば、スタックトレースを吐かせられますが、c++では細かく指定しないとだめなのでしょうか・・・?
稚拙で申し訳ないですが、ここまで、ご覧くださりありがとうございます!
質問方法への指摘等でも結構ですので、ぜひご意見ください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/24 08:37