catchブロックが省略できる理由って...
当たり前とは思いますが...
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
try/finally を使う為です。
java
1try { 2} finally { 3}
例外とは関係なく、try のスコープを抜ける際に finally スコープに入ります。最近は try-with-resource の記法が使われる方が多いかもしれません。
java
1try (BufferedReader br = new BufferedReader(new FileReader(path))) { 2 return br.readLine(); 3}
投稿2017/08/14 15:00
総合スコア5030
0
Javaの言語仕様で定義されているからです。
http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.20.2
try句の中で何らかの例外が発生した場合はその時点でtry句の処理を中断し、発生した例外に対する制御であるcatch句に委ね、例外の有無に関わらずそれぞれのブロックで必ず行う処理を実装するブロックとしてfinally句があります。
catch句で何もしない=発生した例外をこのブロックではもう何もしないことを事実上宣言することになりますが、try句の中で異常を検知し、その後特に何もしなくても問題のない例外であれば、そもそもtry句で囲む理由はありません。
チェック例外が発生したとき、つまり何らかの例外に対する処理を記述しなければならない問題が発生したとき、catchもfinallyもない、つまりその処理ブロックで完全に何もしないのであれば、メソッドのthrowsに書きます。
投稿2017/08/14 22:41
総合スコア12011
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
paiza.ioの実行結果ですが、以下のようになりました。
C#
1using System; 2 3public class Hello{ 4 public static void Main(){ 5 // Here your code ! 6 try { 7 throw Exception(); 8 } 9 } 10}
エラーメッセージ
text
1Compilation failed: 1 error(s), 0 warnings 2Main.cs(9,4): error CS1524: Unexpected symbol `}', expecting `catch' or `finally'
私の環境では、catchもしくはfinallyが必要であるとのことでした。
投稿2017/08/14 14:38
総合スコア667
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。