今天学习内部类以及异常
内部类就是类内部的类。
①成员内部类:作为外部类的成员,可以直接使用外部类的成员和方法;
内部类的实例化:
外部类 对象=new 外部类();
外部类.内部类 对象2=对象.new 内部类();
②局部内部类:在方法中定义的内部类;
③静态内部类:修饰符为static,不需要创建内部类和外部类对象,直接引用‘外部类.内部类’
实例化如下(不需要创建):
外部类.内部类 对象=new 外部类.内部类();
④匿名内部类:就是没有名字的内部类,正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写,但使用有个前提条件:必须继承一个父类或实现一个接口。
匿名内部类一定是在new后面:
Person p = new Person() {
public void eat() {
System.out.println("eat something");
}
};
或者
Person p = new Person() {
public void eat() {
System.out.println("eat something");
}
};
二、异常
(1)异常的父类 Throwable
子类: Error Exception
error通常是底层环境或者硬件的问题,不需要捕获;
exception分为checkedException以及UncheckedException,前者需要用try catch捕获,后者又称为RuntimeException,非运行时异常必须捕获。
(2)异常处理
try{可能出错的代码块;}
catch(Exception e){e.printStackTrace;异常处理代码块;}
finally{不管出错与否,最终执行的代码;}
异常处理代码:
如果程序需要在catch块中访问对象的相关信息,可以通过调用catch后异常形参的方法来获取
1、 getMessage():返回异常的详细描述字符串。
2、 printStackTrace():将异常的跟踪栈信息输出到标准错误输出。
3、 printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。
4、 getStackTrace():返回该异常的跟踪栈信息。
public class trycatchfinally {
public static void main(String[] args){
try {
int y=10/2;
}
catch(Exception a){
a.printStackTrace();
}
finally{
System.out.print("over");
}
}
}
throws抛出异常,不作处理,直接抛弃