16日目
2019年5月12日。
これは、私は、Javaを学ぶ16日です。
この日、私は、次の知識を学びました。
異常な
例外Javaプログラムエラーが動作中に発生されます
Throwable:問題、親クラス
次のようにいくつかの一般的な方法は以下のとおりです。
getMessage()
:例外メッセージを取得し、文字列を返しますtoString()
:文字列を返す、例外クラスと例外を取得します。printStackTrace()
:例外クラス名と例外情報だけでなく、プログラムの異常の位置を取得します。戻り値void
エラー:エラーは、問題の深刻さに属し、そのようなメモリオーバーフローとして、扱うことができません
例外:異常に分割:
- コンパイラ例外:非のRuntimeException及びそのサブクラスは、対処しなければならない、または実行することはできません
- ランタイム例外:RuntimeExceptionが、その他のサブクラス
インタビューの質問:JVMのデフォルトは例外を処理する方法ですか?
主な機能は、この問題を受信すると、2つのアプローチがあります。
その後、問題と自身の契約、および実行を継続:A
、Bを:彼はアプローチなかったため、のみ処理するために、メインJVMを呼び出すために
、JVMはデフォルトの例外ハンドラを持っています機構は、それが異常な処理。ある
。例外の名前、例外情報コンソール上の印刷の異常な位置、及びプログラムが実行を停止します
2つの方法の例外処理:
- 最後に...キャッチ...してみてください
- 基本フォーマット:
try {
可能出现问题的代码 ;
}catch(异常名 变量名){
针对问题的处理 ;
}finally{
释放资源;
}
- 変形形式:
//格式1
try {
可能出现问题的代码 ;
}catch(异常名 变量名){
针对问题的处理 ;
}
//格式2
try {
可能出现问题的代码 ;
}catch(异常名1 变量名1){
对异常的处理方式 ;
}catch (异常名2 变量名2){
对异常的处理方式 ;
}....
//格式3
try {
可能出现问题的代码 ;
}catch(异常名 变量名){
针对问题的处理 ;
}finally{
释放资源的处理 ;
}
-
:.できるだけ1.tryコードをメモし、それは文が出力できる場合でも、プロセスをキャッチしない(隠れた例外情報にはできません)
2.できるだけ明確に、大きな扱いに慣れていないクリアすることができます。そして、異常が誰が、関係の元と同じレベルの後、親子関係の場合、親は後ろでなければなりませんが誰であるかは関係ありません
3つのついにキーワード:制御最後にIOストリーム操作とデータベース操作におけるリソースの解放のために実行されます体を見て私たちは、表示されます
4インタビューの質問:最後の違い、最終的に確定し、- 最終:改質剤の状態は、クラス、変数を飾るために使用することができるされ、メソッドのメンバー
修飾クラスはサブクラスによって継承することができない、修飾された変数は、実際に再割り当てすることはできない定数れる
方法は、修飾サブクラスでオーバーライドすることはできません - 最後に:キャッチ...してみてください...文で使用され、アクション:リソースの機能を解放:必ず実行する(JVMできないの出口)
- 最終決定:メソッドObejctクラスを、ごみ用
5 インタビューの質問:あなたはそこにreturn文、あなたは、まだ復帰の前に何を返しているかどうコードが実行される最終的に何をキャッチした場合は?
解決策:復帰前に実行されます - 最終:改質剤の状態は、クラス、変数を飾るために使用することができるされ、メソッドのメンバー
-
スロー
関数法を定義するとき、あなたは、発信者の問題に対処するように露光する必要があります。
次に投げる方法で同定しました。
フォーマット:修饰符 方法名 throws 异常名{ }
そこもキーワード投げ、それとの間の差であるとスローは、次のとおりです。- スロー:例外をスロー、これがスローされる内部スローされた例外オブジェクトのメソッドで使用するために、起こっている必要があり異常である、あなただけ投げることができます
- スロー:スローされた例外は、発生する可能性があり、文の中で使用される方法は、例外はクラス名によってスローされ、あなたはより多くを投げることができます
メモは、例外がスローされます。
- 書き換え時に、親クラスのメソッドが例外を投げていなかったサブクラスのみ(試して...キャッチ)をキャプチャすることができる場合は、サブクラスが例外をスローすることができない、例外がある親クラスのメソッドをサブクラス
- 親クラスのメソッドが例外をスローし、サブクラスは、同じ親クラスの例外を投げることができる親クラスの例外よりも小さいスローすることができます
- 父親を投げることができないサブクラスは、例外を投げていませんでした
カスタム例外:
その後、開発プロセスでは、我々はさまざまな問題が発生する可能性があります。JDKは不可能と例外クラスを対応する各与えられた特定の問題のためです。需要を満たすために、我々は、カスタム例外にする必要があります。
カスタム例外を使用するには、我々は我々のシステムの異常に当社独自の例外クラスの定義を必要とする必要があります
このクラスはExceptionから継承する、またはRuntimeExceptionを継承します
コード例:テストの点数が0から100の間でなければなりません、それは例外を満たしていません
1. ScoreExceptionカスタム例外クラスのコードは次のよう:
public class ScoreException extends RuntimeException{
public ScoreException(String msg) {
super(msg);
}
}
2.試験クラスは、例をMYTEST。
public class MyTest {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的考试成绩,范围是 0--100");
int score = scanner.nextInt();
test(score);
}
private static void test(int score) {
if (score > 100 || score < 0) {
throw new ScoreException("成绩不合法");
} else {
System.out.println(score);
}
}
}
ファイルの種類
ファイルは、Javaプログラムのファイルおよびディレクトリのパス名の抽象表現です
コンストラクタ:File(String pathname)
:パスにより得られたFileオブジェクト
File(String parent, String child)
:Fileオブジェクトによると、サブディレクトリとファイル/ディレクトリを取得します
File(File parent, String child)
:Fileオブジェクトによると、Fileオブジェクトの親と子のファイル/ディレクトリを取得します
一般的に使用される方法のメンバー
-
作成機能
public boolean createNewFile()
:新しいファイルを作成し、そのようなファイルが存在する場合は、あなたが作成することはありませんpublic boolean mkdir()
:そのようなフォルダが作成されていないがある場合は、フォルダを作成し、ディレクトリが多層を作成するために、層ごとに作成された場合、このメソッドは唯一、フラットなディレクトリを作成できることに注意してくださいpublic boolean mkdirs()
:フォルダを作成し、親フォルダが存在しない場合、それはあなたが作成するのに役立ちます、あなたは多層ディレクトリを作成することができ、もちろん、あなたがフラットなディレクトリを作成することができます- 注:ファイルやフォルダを作成するときに何も書かれた手紙のパスはありませんが、デフォルトはプロジェクトのパスに作成されます。一般に、プロジェクトは、相対パス(ディスクシンボル無し経路)ではなく、絶対パス(詳細なディスク・シンボルのパス)を使用するのが最適でした
-
機能を削除します
public boolean delete()
:ファイルまたはフォルダを削除するには
-フォルダを削除すると、このフォルダは空のフォルダでなければなりません。このフォルダのファイルがありますが、削除することができない場合
- Javaはごみ箱を行っていません削除します
-
機能の名前を変更します
public boolean renameTo(File dest)
:指定されたファイルパスにファイルの名前を変更
- 同じパス名の名前が変更された場合。パス名が異なる場合は、名前を変更してカットされます。
-
判定機能
public boolean isDirectory()
:ディレクトリかどうかを判断するために、public boolean isFile()
:ファイルかどうかを確認public boolean exists()
:決定するかどうかがpublic boolean canRead()
:それは読みやすいかどうかを判断しますpublic boolean canWrite()
:書き込み可能かどうかを確認public boolean isHidden()
:隠されたかどうかを判断するために、public boolean isAbsolute()
:絶対パスを使用するかどうかを決定します
-
取得機能
public String getAbsolutePath()
:絶対パスを取得します。public String getPath()
:相対パスを取得します。public String getName()
:の名前を取得します。public long length()
:長さを取得します。バイトカウントpublic long lastModified()
:、ミリ秒単位の最終更新時刻を取得しますpublic String[] list()
:指定されたディレクトリのフォルダ内のすべてのファイルやファイルの配列の名前を取得します。public File[] listFiles()
:ファイルは指定されたディレクトリのフォルダ内のすべてのファイルやファイルの配列を取得します
-
ファイルフィルタ
public String[] list(FilenameFilter filter)
:これは、文字列の配列、フィルタで指定されたファイルやディレクトリを満たすこの抽象表現で指定されたディレクトリのこれらの文字列のパス名を返します。public File[] listFiles(FilenameFilter filter)
:指定されたフィルタファイルとディレクトリを満たすこの抽象パス名のディレクトリのパス名の抽象パス名の配列を返します
Fileクラスの古典的なアルゴリズム
-
ファイルの行き来
出力に、Dドライブを決定するために指定したディレクトリ内.jpgファイルの拡張子はありますが、そうであれば、ファイル名:需要を
次のようにコードがあります
public class MyTest {
public static void main(String[] args) {
File file = new File("D:\\test");
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()&&f.getName().endsWith(".jpg")){
System.out.println(f.getName());
}
}
}
}
- ファイルとして使用されるフィルタ横断
ニーズを:ファイル名のフィルタモードを使用して、ファイル拡張子の.jpgディスクDがディレクトリを指定し、そしてもしそうであれば、絶対ファイルパスを出力するか否かを判断する
次のようにコードすることです
public class MyTest {
public static void main(String[] args) {
File file = new File("D:\\test");
File[] files = file.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isFile()&&pathname.getName().endsWith(".jpg")){
System.out.println(pathname.getAbsolutePath());
return true;
}else{
return false;
}
}
});
for (File file1 : files) {
System.out.println(file1);
}
}
}
- ファイルを横断し、ファイル名を変更する
必要があります。指定したディレクトリ内のすべてのファイルの名前を変更する
:のような、
E:\リソース\は、専制政治のすべての種類は、[WWW-itcast-CN]は痛み01.mp4のすべての種類の硬化
Eを:\リソース\様々な特殊治療[WWW-itcast-CN]は痛み02.mp4のすべての種類の硬化
E:様々な治療法\ \リソース[WWW-itcast-CN]様々な疼痛03.mp4の治療法を
...
に変更
E:さまざまな\ \リソース治療法\は、様々な痛みに01.mp4硬化
Eを:\リソース\様々な治療法\は痛み02.mp4のすべての種類の硬化
様々な疼痛03.mp4の治療法を\ \リソース\様々な治療法:Eを
...
次のようにコードがあります
public class Test {
public static void main(String[] args) {
File file = new File("E:\\resource");
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()&&f.getName().startsWith(".[www-itcast-cn]")){
String a = f.getName().replace("[www-itcast-cn]", "");
File file2 = new File("E:\\resource",a);
f.renameTo(file2);
System.out.println(file2.getName());
}
}
}
}