3

try / catchを使用しようとすると、どのタイプのエラーを試行してキャッチするかについて混乱します。ここにstackoverflowで調査を行う際に、

catch(Exception e)

一般的なものですが、疑似コードを使用してオーディオファイルを再生しようとする例を探す必要がある特定のエラーの種類はどこにありますか?

try{
  play audio file
}
catch ( invalid file)
catch ( bad connection)
catch ( file not found)
catch ( invalid file size)
etc

上記の疑似エラーは、インターネット接続からファイル固有の情報まで、幅広い機能をカバーしています。

これらすべてのケースをカバーするにはどうすればよいですか

ファイルを再生できないというメッセージを表示するアプリがありますが、特定のエラーをキャッチし、このメッセージが表示されるたびに何が起こっているかを確認して修正したいと思います。

自分でコーディングした独自の何かのエラーを見つけようとした場合はどうなりますか。

これは悪い例かもしれませんが、惑星の軌道の持続時間を計算し、持続時間が特定の値よりも小さい場合にエラーを生成したい場合。使用される値により、領域は13か月を超えるはずですが、何らかの理由で13を下回る原因があり、その理由を知りたいので、何かが間違っていて、それが何であるかわからないため、trycatchを使用します。数値自体ではなく、数値の絶対値を使用する必要があるかもしれません。主なポイントは、エラーの原因がわからないことです。

4

2 に答える 2

3

キャッチする特定のタイプを指定することにより、特定のエラーをキャッチできます。

try {
    ...file open...
} catch (IOException e) {
    ...handle IO exception...
}

のすべてのサブクラスである例外の巨大なリストがありExceptionます。例外は階層に編成されているため、一部の例外は他の例外を包含します。たとえばEOFException、はのサブクラスでIOExceptionあるため、IOエラー(EOFエラーを含む)をキャッチする場合は、を使用します。IOException特にEOFのみをキャッチする場合は、を使用しますEOFException

独自のExceptionサブクラス(またはそのサブクラスの1つ)を記述し、他の事前定義された例外と同様にキャッチできます。

于 2012-07-11T22:24:15.940 に答える
0

何を「キャッチ」するかを知る唯一の方法は、どの例外がスローされるかを示すメソッド定義を調べることです。ジェネリックキャッチをすべて必要とする場合は、例外クラスが他のすべての標準例外の基本クラスであるため、TryCatchを使用して既に使用しています。

于 2012-07-11T22:24:31.827 に答える