异常处理

###java的异常分为两种:Error、Exception

*1.Error是错误。java异常处理程序是无奈的。例如jvm内存不足

*2.Exception 是异常。编程错误,或者偶然因素产生的问题,可以通过编程解决

###异常处理方法:1.遇到错误就终止 2.程序员编程是考虑了对应的异常情况。通过异常捕获来处理异常。

###我们处理的异常多数是运行时异常

###try-catch 异常处理 3个流程

*1.代码正确 正常执行-不会进入catch语句块

*2.代码异常 catch语句捕获到了对应的异常,那么执行catch语句块内容,不会造成程序中断,后续代码正常执行

*3.代码异常 catch语句未捕获到对应异常,那么不执行catch块,程序中断。

*4.如果我想保证捕获到异常我的异常类型可以写成所有异常的父类Exception

catch (Exception e)

###finally使用时,当函数含有return语句,也会执行finally中的内容,先执行finally中内容,在去return

###多重catch捕获时,注意将异常范围小的放前面,范围大的放后面

###throws异常分为2类,1类是RuntimeException的子类,跑出这类异常,jvm可以自动捕获,可以不写 try-catch

public void setAge(int age) throws IllegalAccessException

//调用时

student.setAge(-100);

###还有1类是非RuntimeException的子类,抛出这类异常,必须写try-catch

public void setAge(int age) throws FileInputStream

//调用时要捕获对应异常

try{student.setAge(-100);}catch(FileInputStream e){e.printStackTrace();}

###包装类的用途

*1.作为基本类型的对应的对象类型存在,方便设计到对象的操作。例如:存储到容器对象

*2.包含了基本类型的相关属性和方法,例如:最大、最小值,进制转化等等。

###自动拆装箱

//自动拆装箱

int m = 20;

Integer n4 = m;  //自动装箱将基本类型装箱为包装类型

int m2 = 20+n4;  // 自动拆箱将包装类型拆箱为基本类型

###throw和throws的区别和联系

*1.throws出现的位置是方法头部,throw写在方法体

*2.throws表示出现异常的可能性,并不一定发生这个异常,throw则是手动抛出异常,执行throw一定产生异常

*3.两者都是消极处理异常的方式(注意不是不好的方式),异常处理者为上层的调用处理

###内部类

*1.java中可以将类,定义在其他类的里面或者方法里面,形成了内部类

*2.成员内部类,局部内部类,静态内部类,匿名内部类。

###成员内部类

*创建内部类对象语法

Circle circle = new Circle(200);

Circle.Draw draw = circle.new Draw();

*外部类如果要访问成员内部类的成员,必须先创建一个成员内部类对象,在通过这个对象的引用来访问。

OutterClass outterClass = new OutterClass();

OutterClass.InnerClass innerClass = outterClass.new InnerClass();

System.out.println("outterclass.x ="+ outterClass.x);

System.out.println("innerclass.y ="+innerClass.y);

###局部内部类:定义在方法或者某个作用域的类,他和成员内部

###匿名内部类。我们需要内部建立一个对象,却不必给改类对象起名,这种累叫内部类

*匿名内部类在如下条件使用比较合适

*只用到类的一个实例

*类定义后马上用

*类非常小(10行代码以下)

*给类命名不会让你的代码更容易理解

###静态内部类:定义在另一个类中的类,只不过类前面多了一个修饰符 static

*静态成员内部类的

Outter.Inner inner = new Outter.Inner();

###  .this .i

//成员

private double radias = 0;

private int i = 0;

public Circle(double radias){

this.radias = radias;

}

//成员内部类

class Draw{

int i = 10;

public void drawShape(){

int i = 100;

System.out.println("半径:"+radias);

System.out.println(i);  //局部变量100

System.out.println(this.i); //成员变量10

System.out.println(Circle.this.i); //外部类的成员变量0

}

}

public static void main(String[] args) {

Circle circle = new Circle(200);

Circle.Draw draw = circle.new Draw();

draw.drawShape();

}

你可能感兴趣的:(异常处理)