学习Java必知必会的34个核心知识点( 七 )

  • public void printStackTrace():在控制台上打印Throwable对象封装的异常信息
  • 异常处理总结
    • try 块:用于捕获异常 。其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块 。
    • catch 块:用于处理try捕获到的异常 。
    • finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行 。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行 。
    在以下4种特殊情况下,finally块不会被执行:
    1. 在finally语句块第一行发生了异常 。因为在其他行,finally块还是会得到执行
    2. 在前面的代码中用了System.exit(int)已退出程序 。exit是带参函数 ;若该语句在异常语句之后,finally会执行
    3. 程序所在的线程死亡 。
    4. 关闭CPU 。
    下面这部分内容来自issue:https://github.com/Snailclimb... 。
    关于返回值:
    如果try语句里有return,返回的是try语句块中变量值 。
    详细执行过程如下:
    1. 如果有返回值,就把返回值保存到局部变量中;
    2. 执行jsr指令跳到finally语句里执行;
    3. 执行完finally语句后,返回之前保存在局部变量表里的值 。
    4. 如果try,finally语句里均有return,忽略try的return,而使用finally的return.
    33 Java序列化中如果有些字段不想进行序列化,怎么办?对于不想进行序列化的变量,使用transient关键字修饰 。
    transient关键字的作用是:阻止实例中那些用此关键字修饰的的变量序列化;当对象被反序列化时,被transient修饰的变量值不会被持久化和恢复 。transient只能修饰变量,不能修饰类和方法 。
    34 获取用键盘输入常用的的两种方法方法1:通过 Scanner
    Scanner input = new Scanner(System.in);
    String s = input.nextLine();
    input.close();
    方法2:通过 BufferedReader
    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    String s = input.readLine();




    推荐阅读