内部类与外部类
Outer.java
package Class;
public class Outer {
private int id;
public void out(){
System.out.println("这是外部类的方法");
}
public Outer() {
}
public Outer(int id) {
this.id = id;
}
public class Inner{ //成员内部类
public void in(){
System.out.println("这是内部类的方法");
}
public void getID(){
System.out.println(id);
}
}
}
package Class;
public class application {
public static void main(String[] args) {
Outer outer=new Outer(23);
Outer.Inner inner=outer.new Inner();
inner.in();
inner.getID();
}
}
这是内部类的方法
23
异常(exception)与错误(error)
- Error和Exception的区别:Error通常是灾难性的致命错误,是程序无法控制和处理的,当出现这些异常时,Java虚拟机(JVM)一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且再程序中应该尽可能的去处理这些异常。
ArrayIndexOutOfBoundsException**(数组下标越界)**
NullPointerException**(空指针异常)**
ArithmeticException**(算术异常)**
MissingResourceException**(丢失资源)**
ClassNotFoundException**(找不到类)**等异常,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。
运行时错误一般不能被检查,非运行时错误一般称为异常。剩下的无法被检查的是error.
异常处理机制
package Exception;
public class test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//ctrl + alt + t 包裹选中的代码自动生成异常捕获
try {
if(b==0){
throw new ArithmeticException();//主动抛出异常,一般用在方法中
}
System.out.println(a/b);
} catch (Exception e) {
e.printStackTrace();//打印错误的栈信息
} finally {
}
}
}
ctrl + alt + t 包裹选中的代码自动生成异常捕获
自定义异常类
package Exception;
public class MyException extends Exception{//自定义异常类
//传递数字 > 10
private int detail;
public MyException(int x){
this.detail = x;
}
//
@Override
public String toString() {
return "MyException{" + "detail=" + detail + '}';
}
}
package Exception;
public class test2 {
//测试异常的方法类
static void test (int a) throws MyException {
System.out.println("传递的参数:"+a);
if (a > 10)
{throw new MyException(a);}
System.out.println("ok");
}
public static void main(String[] args) {
try{
test(11);
}catch (MyException e){
System.out.println("MyException=>"+e);
}
}
}
传递的参数:11
MyException=>MyException{detail=11}