使用throw抛出异常
throw总是出现在函数体中,用来抛出一个Throwable类型的异常。程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。
列如:(1)throw new exceptionname; (2)抛出一个IOException类的异常对象:throw new IOException;
作用:
如果抛出了检查异常,则还应该在方法头部声明方法可能抛出的异常类型。该方法的调用者也必须检查处理抛出的异常。
如果所有方法都层层上抛获取的异常,最终JVM会进行处理,处理也很简单,就是打印异常消息和堆栈信息。如果抛出的是Error或RuntimeException,则该方法的调用者可选择处理该异常。
finally代码块:
在java语言异常处理中,finally块的作用就是不管有没有异常都会进行执行,经常被用在需要释放资源的情况下。但是程序执行return就意味着结束当前函数的调用并跳出这个函数体,所以所有语句都只能在return前执行(除非有exit函数)。finally语句也是在return 之前执行的。
耦合:在软件工程中,
对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小。
解耦:尽可能减少代码耦合,如果发现代码耦合,就要采取解耦技术。让数据模型,业务逻辑和视图显示三层之间彼此降低耦合,把关联依赖降到最低,而不至于牵一发而动全身。原则就是A功能的代码不要写在B的功能代码中,如果两者之间需要交互,可以通过接口,通过消息,甚至可以引入框架,但总之就是不要直接交叉写。
用lambda表达式实现Runnable:那就是用() -> {}代码块替代了整个匿名类。
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();