1. package demo.trydemo;
    2. import org.junit.Test;
    3. import java.io.IOException;
    4. import java.io.InputStreamReader;
    5. import java.io.OutputStreamWriter;
    6. /**
    7. * try使用示例
    8. */
    9. public class TryDemo {
    10. //jdk7版本使用方式
    11. @Test
    12. public void tryJdk7() {
    13. InputStreamReader reader = new InputStreamReader(System.in);
    14. try {
    15. reader.read(); //读取流的操作:略
    16. } catch (IOException e) {
    17. e.printStackTrace();
    18. } finally {
    19. try {
    20. reader.close();
    21. } catch (IOException e) {
    22. e.printStackTrace();
    23. }
    24. }
    25. }
    26. //jdk8版本使用方式
    27. @Test
    28. public void tryJdk8() {
    29. try (InputStreamReader reader = new InputStreamReader(System.in)) {
    30. reader.read();//读取流的操作:略
    31. } catch (IOException e) {
    32. e.printStackTrace();
    33. }
    34. }
    35. //jdk9版本使用方式
    36. @Test
    37. public void tryJdk9() {
    38. InputStreamReader reader = new InputStreamReader(System.in);
    39. //可以直接try引用,这时 reader是final的,常量不可变
    40. try (reader) {
    41. reader.read();//读取流的操作:略
    42. } catch (IOException e) {
    43. e.printStackTrace();
    44. }
    45. }
    46. //jdk9 多个资源try使用
    47. @Test
    48. public void tryJDK9() {
    49. InputStreamReader reader = new InputStreamReader(System.in);
    50. OutputStreamWriter writer = new OutputStreamWriter(System.out);
    51. //可以直接try引用,这时 reader是final的,常量不可变
    52. //多个资源用分号隔开
    53. try (reader; writer) {
    54. reader.read();//读取流的操作:略
    55. writer.append("");//模拟流的操作:略
    56. } catch (IOException e) {
    57. e.printStackTrace();
    58. }
    59. }
    60. }