質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

365閲覧

JAVA 例外処理について

ueyama

総合スコア20

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2018/07/11 05:30

コンパイル時にチェックされる例外(Exception)と、
コンパイル時にチェックされない例外(RuntimeExceptionとError)ですが、
コンパイル時にチェックされない例外の使い道が分かりません。
間違えていたらすみません。コンパイル時にチェックされない例外は「実行時」に見つけると考えています。
なら例外を見つけたいのなら「実行時」に見つけるより「コンパイル時」にチェックされる方がそもそも解決しやすいと思うのですが、「実行時」に例外がみつかると良いメリット等教えていただけますでしょうか。
実際にどういった所で使うかも教えていただきたいです。

tossy001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

検査例外と非検査例外がある理由ですが、言語組み込みの非検査例外は

  • NullPointerException…参照型変数をnullのままアクセスしようとして発生する
  • ZeroDivisionDxception…整数除算でゼロ除算をしようとした時に発生する
  • ClassCastException…対応しないキャストを行おうとした時に発生する

など、特定のメソッドと対応しない例外にも割り当てられているため、これらを検査例外にしてしまえば偽陽性(周辺の処理などから絶対発生しないとわかっているところで「検査例外」として処理することを強制される)が多発するなど、極めて面倒なことになります。

また、エラーについては

  • メモリ不足
  • ライブラリやシステムが壊れていた

等の場合に発生するものであり、これまた特定のコードで検査するのになじまない(というより、何もできない場合も多い)ものです。

投稿2018/07/11 05:54

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

検査例外と非検査例外のことですね。
勘違いされているようですが、例外が発生するのはあくまで実行時です。

コンパイル時にチェックされ得るのは、**『実行時に例外が発生した際の経路があるかどうか』**です。
そしてこの経路の実装を強制するのが検査例外、強制しないのが非検査例外です。

投稿2018/07/11 05:39

LouiS0616

総合スコア35660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  1. Javaの理論と実践 例外をめぐる議論

  2. The Trouble with Checked Exceptions

C#言語設計者(Anders Hejlsberg)によるC#には何故検査例外を採用しなかったのか

検査例外はJava言語仕様の設計ミスとして取るべきであって、互換性のために残っている仕様と思われます。
あと最近流行りのasync/awaitとも相性が悪い点もあるかと。


Java言語仕様より11.2. Compile-Time Checking of Exceptions

The unchecked exception classes (§11.1.1) are exempted from compile-time checking.

グーグル翻訳
チェックされていない例外クラス(11.1.1)は、コンパイル時のチェックが免除されます。

投稿2018/07/11 06:01

編集2018/07/11 06:02
umyu

総合スコア5846

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

削除しました。以後気をつけます。

投稿2018/07/11 05:34

編集2018/07/11 05:50
tossy001

総合スコア31

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/07/11 05:42

回答? ここは掲示板ではないので使い方を間違えないようにしてくださいね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問