(1)Java支持在一个类中声明另一个类,这样的类称为内部类,而包含内部类的类称为内部类的外嵌类。
(2)和某类有关的匿名类就是这类的一个子类,该子类没有明显地用类声明来定义,所以称为匿名类
(3)和某类有关的匿名类就是实现该接口的一个子类,该子类没有明显地用类声明来定义,所以称作匿名类
(4)Java的异常可以出现在方法调用过程中,即在方法调用的过程中抛出异常对象,导致程序运行出现异常,并等
待处理。Java使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try部分,当try部
分中的某个方法调用发生了异常后,try部分将立刻结束执行,转向相应的catch部分。
接下来详细讲一下异常类:
Java使用throw关键字抛出一个Exception子类的实例表示异常的发生。比如Integer.parseInt("ab12")会抛出NumberFormatException对象,流对象调用read去读取不存在的文件,就会抛出IOException。
异常对象可以下面方法输出异常对象的信息
public String getMessage();
public void printStackTrace();
public String toString();
try-catch语句与try-catch-finally语句
1.try-catch
try-catch是用来处理异常的,将可能出现异常的操作放在try里面,一旦抛出异常,转向执行catch部分。try-catch语句可以由几个catch组成,分别处理相应的异常。
try{
//可能发生异常的代码
}catch(ExceptionSubClass1 e) {
...
}catch(ExceptionSubClass2 e) {
...
}
try-catch-finally
try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }
catch { //除非try里面执行代码发生了异常,否则这里的代码不会执行 }
finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }
注:如果try-catch结构中执行程序退出代码,即执行System.exit(0),则不执行finally子语句
public class test3 {
public static void aMethod() throws Exception{
try{
throw new Exception();
}finally{
System.out.println("finally");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
aMethod();
}catch(Exception e){
System.out.println("exception");
}
System.out.println("finish");
}
}
无论是try里面抛出异常,还是抛出异常进入catch处理,最终还是进入finally处理。
这一机制也非常有用:
比如数据库连接模块中,无论try,还是catch,进行了return操作,都会执行finally,可以finally内部执行关闭数据库连接操作。以便于释放已经产生的连接,释放资源。