/ *
*例外処理2をスローします
*
- 図1は、この実行方法は、例外をスローすることがときを示す方法の+例外タイプ書かれた文をスローします。
- 例外を行う方法が発生すると、例外の宣言された型と一致するオブジェクトがスローする場合、例外は、異常にクラスオブジェクトを生成します
- 、彼らはスローされます、例外を処理するこの方法により、呼び出し側は、例外コード次の文は実行されません。
- 図2は、後者は、例外の種類が離間し、複数の用途を有することができるスロー。例外タイプ例外タイプはプロセスで製造することができ、それは親であってもよいです。
- 3、のtry-catch-最終的な構造は、メソッドが、異常は報告されていない呼び出されたときに、例外外に本物です。
- 例外は、呼び出し側のメソッドへの唯一の方法をスローされますスロー本当に異常を取り除くしませんでした。
- 4.サブクラスがメソッドをオーバーライドする際に書き換える処理は、親クラスよりも多くの例外をスローすることはできません
- サブクラスのメソッドが親クラスのメソッドの最大の例外タイプよりも大きくすることはできませんという例外タイプを投げ、複数の例外がある親クラスのメソッド。
- 親クラスまたはサブクラスのサブクラス必見の例外タイプ。通常、親クラスの例外タイプ。
- 理由:サブクラスであれば、親クラスのタイプに対処する上で多型、例外のtry-catch文のタイプを使用する場合
- 例外のタイプは、その後のtry-catchステートメントを処理できなかった親よりも大きい場合、親クラスへの参照は、オブジェクトのサブクラスを使用することはできません
- 図5は、親クラスのメソッドは、例外の種類をスローしていない場合、方法はそれ以外条に違反して、スロー持つサブクラスでオーバーライドすることはできません。
- どのようにハンドルの例外への発展の道を選択するには:
- 1、しない親クラス・メソッドは、サブクラスがトライキャッチ構造を用いた処理、異常無効にすることができる、スロー
- 別の方法B呼び出しを行う2. A法、今度はBがCを呼び出し、いくつかの方法がプログレッシブの関係を行っており、この方法は、いくつかのスローを使用することができます
- 方法Aの実行時のtry-catch一体構造を用いた処理は、別々に処理すれば、異常の後に方法C、エラーデータは、後続のプロセスに送信されることができます。
- 3、のtry-catch構文からコードの冗長性、同時にスローで使用されていないが、ほとんどすることができます。
- 4、収集エラーログに開発の必要性、バグを変更する、のtry-catchは一時的な計画を提供しています。
- 概要:避けられないバグを変更します。
* /
package exception;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class Exception_Throws {
//main方法中处理异常,避免交给JVM处理,防止报错
public static void main(String[] args) {
Exception_Throws ex = new Exception_Throws();
//两种异常统一处理
try {
ex.method1();
}catch(IOException e) {
System.out.println("程序出错");
}
//先在下一层方法中捕获异常进行处理,无法处理再到上一层处理
try {
ex.method3();
}catch(IOException e) {
System.out.println("程序出错");
}
}
//方法中只抛出异常不处理
public void method()throws FileNotFoundException,IOException {
File file = new File("E:\\eclipse-workspace\\Contacts\\src1.txt");
FileInputStream fis = new FileInputStream(file);
int date = fis.read();
while(date != -1) {
System.out.print((char)date);
date = fis.read();
}
fis.close();
System.out.println("----------");
}
//方法中只抛出父类异常,交给上一层处理
public void method1() throws IOException{
method();
}
//在方法中处理异常,只处理一种,另一种抛出给上一层
public void method3() throws IOException{
try {
method();
}catch(FileNotFoundException e) {
System.out.println("找不到文件");
}
}
public void method4() throws FileNotFoundException,Exception{
}
}
class SubException extends Exception_Throws{
// public void method() throws Exception{//子类重写的方法不能抛出比父类方法中更大的异常
//
// }
public void method() throws FileNotFoundException{
}
public void method4() throws Exception{
}
}