teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

edit

2021/08/09 01:44

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -2,4 +2,10 @@
2
2
 
3
3
  これは宣言であって初期化ではないです。
4
4
  cという変数はint型だと言うだけで、何も値を保持していません。
5
- 「初期化」とは変数などに初期値を設定することを指します。
5
+ 「初期化」とは変数などに初期値を設定することを指します。
6
+ Exceptionに入ればそれこそ何の値も設定されないことになります。
7
+ Exceptionに入るかどうかは実行してみないと分からないので「初期化されない可能性がある」と警告が出ます。
8
+ 例え実装者が「必ず正当な値が入るつもり」で実装していたとしても、プログラム側はそんな意図は知らないわけで、与えられた情報にそって処理が行われます。
9
+ try-catchを入れないとそもそもコンパイルできないことだってあるのは、その機能が何かしらのExceptionをthrowするようにできているからで、それはつまり、Exceptionが起きる可能性がある機能であることを指します。
10
+ なので、変数を必ず参照する実装なのであれば、初期化は必須です。
11
+ ※Exception起きた状態で続行するかどうかは要件次第