--javaリソースチェーンクリーナーそれをどのように特別なタスクをオフにしますか?

小さなCは特別なハッカーである、彼は人々が攻撃する理由を見つけされるのを避けるために、ハッカーの攻撃の痕跡を除去するために、ハッカーのためのサービスを提供に特化。

特別なタスクjavaのスカベンジャー

 

今日の彼は、特に最近の真似をし、話は特別なコテージキラー他人の話で、犯罪ドラマアクションアドベンチャーゲームを発行したチェーンクリーナーはiFun4all SAによって作られ、ゲーム「チェーンクリーナー」を遊んで摘発されました主要な例は、同様の殺人を作成します。ゲームのプレイヤーは、身体を扱う血液を清掃、プレイヤーはタスクが任意の質問をすることはできません受け入れるときに犯罪の凶器やその他の証拠を隠すために、プロの犯罪現場の清掃スタッフの役割を担います。

突然に注意してください、助け白のための緊急の呼び出しを受けた:Cは、あまりにも、詳細を把握した後、白、コンピュータの小さな白い侵略され、完全なアドレスhttps://cloud.tencent.com/developer/news/333203を参照してください。

Javaの学習にオリジナル白、プログラミングの問題に遭遇:不可解なエラーリソースファイル操作を閉じます。コードは以下の通りであります:

 公共 ボイドのOpenFile()は、スローのIOException { 
 FileReaderのリーダー = 新しい FileReaderの( "somefileというを" )。
 int型私= 0 ;
 一方、(!I = -1 ){ 
 I = reader.read()。
 System.out.println((CHAR )I); 
 } 
 reader.close()。
 System.out.println( "---ファイルの終わり---" ); 
 }

単にプログラミングの経験のために小さな白いC、誘導的な方法を使用してください。

小さなC:上記のコードには、キャッチ例外ではありませんか?例外が捕捉した後、異常の理由を分析することが可能ではないでしょうか?

ホワイト:はいああ、私は試みを使用すること。キャッチしよう

 公共 のボイドのOpenFile(){
  しようと{
  // コンストラクタがスローする可能性がFileNotFoundExceptionを 
 FileReaderのリーダー= 新しい FileReaderの( "somefileという" );
 int型私= 0 ;
 ながら(!I = -1 ){
  // reader.read()IOExceptionをスローする 
 I = reader.read(); 
 System.out.println((CHAR )I); 
 } 
 reader.close()。
 System.out.println( "---ファイルの終わり---" ); 
 } キャッチ(FileNotFoundExceptionを電子){
  // 例外と巧妙な何かを行います 
 }キャッチ(のIOException e)の{
  // 例外を除いて巧妙な何かを行います
} 
 }

小さなC:良い行うには、複数の異常をキャプチャするために知っています!リソースは、最終的には良く置かれていません近いですか?

ホワイト:ああはい、私は、このような文法があると思い、私はそれを再書い

    公共 ボイドのOpenFile()は、スローのIOException { 
        FileReaderのリーダー = ヌル試す{ 
            読者が = 新しい FileReaderの( "somefileという" )。
            int型私= 0 ;
            一方、(!I = -1 ){ 
                I = reader.read()。
                System.out.println((CHAR )I); 
            } 
        }   キャッチ(FileNotFoundExceptionを電子){
             // 例外と巧妙な何かを行います 
        }キャッチ(例外:IOException e)は{
             // 例外を除いて巧妙な何かを行う 
        } 最後に{ 
            reader.close(); 
            System.out.println( "---ファイルの終わり---" ); 
        } 
    }

ホワイト:ああ、また、判断の読者を忘れて、それを変更します。

    公共 ボイドのOpenFile()は、スローのIOException { 
        FileReaderのリーダー = ヌル試す{ 
            読者が = 新しい FileReaderの( "somefileという" )。
            int型私= 0 ;
            一方、(!I = -1 ){ 
                I = reader.read()。
                System.out.println((CHAR )I); 
            } 
        }   キャッチ(FileNotFoundExceptionを電子){
             // 例外と巧妙な何かを行います 
        }キャッチ(例外:IOException e)は{
             // 例外を除いて巧妙な何かを行う 
        } 最後に{
             場合(!リーダー= ヌル){ 
                reader.close(); 
            } 
            reader.close()。
            System.out.println( "---ファイルの終わり---" ); 
        } 
    }

 

小さなC:読者の近くに、それが例外をスローすることもできません、あなたはキャプチャするつもりですか?

ホワイト:ああ、私は忘れて、変更があることが正しいの後に?

    公共 ボイドのOpenFile()は、スローのIOException { 
        FileReaderのリーダー = ヌル試す{ 
            読者が = 新しい FileReaderの( "somefileという" )。
            int型私= 0 ;
            一方、(!I = -1 ){ 
                I = reader.read()。
                System.out.println((CHAR )I); 
            } 
        }   キャッチ(FileNotFoundExceptionを電子){
             // 例外と巧妙な何かを行います 
        }キャッチ(のIOException e)の{
             // 例外を除いて巧妙な何かを行う 
        } 最後に{
             場合(!リーダー= ヌル){
                 しようと{ 
                    )(reader.closeを。
                } キャッチ(のIOException e)の{
                     // 例外を除いて巧妙な何かを行う
                } 
            } 
            ()reader.close。
            System.out.println( "---ファイルの終わり---" ); 
        } 
    }

小さなC:コードはあまりにも面倒ではないでしょうか?より簡潔な方法はありますか?あなたは退屈な作業の一部を扱うJVMの助けをしてみましょうか?

ホワイト:RY-と資源を聞いたが、使用されていません。

小さなC:この単純な、それのいくつかの場合、あなたが何を見ていますか?

    公共 のボイドのOpenFile()がスローにIOExceptionが{
         みてください(FileReaderのリーダー= 新しい FileReaderの( "somefileという" )){ 
            ; 
            int型私= 0 ;
            一方、(!I = -1 ){ 
                I = reader.read()。
                System.out.println((CHAR )I); 
            } 
        }   キャッチ(FileNotFoundExceptionを電子){
             // 例外と巧妙な何かを行う 
        } キャッチ(のIOException e)の{
             //例外と巧妙な何かを行います
        } 
    }

試しにリソース()内の、JVMは自動的に試してみる()内部リソースをシャットダウンし、java.lang.AutoCloseable.close()メソッドを呼び出します。

ホワイト:強力な、私は学びました。

小さなC:私はあなたをテストします。

    公共の 静的な 無効メイン(文字列[] args)を{
         しようと{ 
            System.out.printlnは( "こんにちは、世界を" );
            返します
            } 最後に{ 
            するSystem.out.println( "さようなら世界" )。
            } 
    }
    

これは、どんな結果が出力されますか?

ホワイト:「Hello World」のリターンのうち、最終的に実行することができないため。

小さなC:右、最終的には常に実行され、印刷

こんにちは世界

さよなら世界

ホワイト:私は最終的にそれが常に実行され、理解しています。

小さなC:それはこれを見て、ああ、必ずしもではありません。

    公共の 静的な 無効メイン(文字列[] args)を{
         しようと{ 
            System.out.printlnは( "こんにちは、世界を" ); 
            でSystem.exit( 0 ); 
            } 最後に{ 
            するSystem.out.println( "さようなら世界" )。
            } 
    }

ホワイト:代わりに、印刷の?

こんにちは世界

さよなら世界

小さなC:関係なく、ステートメントブロックが実行したり、誤っfinally文のブロックが実際に実行され、正常に終了してみてください。

しかし、このプログラムでは、その実行を終了しなかった文のブロックを試してみてください。System.exitと方法

これは、現在のスレッドとスポットの死上の他のすべてのスレッドを停止します。finally節は、ラインを与えるものではありません表示されます

チェン特別許可は、実行を継続します。

あなたが実行したい場合は、フックを使用したいです

    公共の 静的な 無効メイン(文字列[] args)を{ 
        System.out.printlnは( "Hello World"の); 
        Runtime.getRuntime()addShutdownHook(。
        新しいスレッド(){
         公共 ボイドラン(){ 
        System.out.printlnは( "さよなら世界" ); 
        } 
        }); 
        でSystem.exit( 0 ); 
        }

ホワイト:良い魔法!

小さなC:生涯学習、一緒に来て!ここでは、今日、私はまだ私のゲームを続けなければなりません。

参考資料

【1】http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html

【2】https://howtodoinjava.com/java/exception-handling/try-catch-finally/

【3】https://howtodoinjava.com/java7/try-with-resources/

[4]のJava疑問

おすすめ

転載: www.cnblogs.com/davidwang456/p/11566466.html