您的位置:首页 > 编程语言 > Java开发

Java面向对象-异常处理机制

2018-03-20 09:53 176 查看
1,异常处理:程序执行到异常的地方就终止,不会继续执行之后的代码

eclipse会打印异常的情况

2,所有的异常都是throwable的子类

throwable有2个分支
1)Error:系统性问题,例如堆栈溢出,只能通过修改代码解决,系统无法自动处理
2)Exception:可以处理
Exception有2种情况
a,编译期异常:必须处理,否则无法运行
b,运行期异常:系统自行处理。包含(数组越界异常,空指针异常,算术异常等)


3,异常处理的2种办法

1) try {可能出现异常的语句} catch (异常的类[可以是Exception或其子类] 变量名) finally {必须执行的语句}

如果try catch有多个catch,则只能执行一个分支

public class Demo1 {
public static void main(String[] args) {
int a = 10;
int b = 0;
int[] c = new int[3];
User[] user = new User[3];
try {
// System.out.println(a/b);
// System.out.println(c[3]);
System.out.println(user[1].name);
} catch (ArithmeticException e) {
System.out.println("算术异常");
} catch (NullPointerException e) {
System.out.println("空指针异常");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界异常");
}
System.out.println("Over");
}
}

class User {
String name = "张三";
}


空指针异常:引用了未实例化的对象

2)throw throws:抛出异常,让执行该方法的类去捕捉异常

pulic static void method throws Exception{
throw new Exception("数组越界异常");
}


3,捕获键盘输入的异常

try { // 捕获按键非法输入
key = sc.nextInt();
} catch (Exception e) {
System.out.println("非法输入!");
sc = new Scanner(System.in);  //系统bug,需要加上这句代码
//递归调用该方法;
return;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: