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

Java 异常处理

2017-12-25 20:15 183 查看
一、异常处理

Throwable(异常处理的父类)

Error 系统崩溃 数据库崩溃(跟代码没关系)

Exception 异常(是跟代码有关系的)

RuntimeException 运行时异常

出现异常 如何解决?

解决的方式:

自己去解决

把问题抛给上级去解决(谁调用的main函数 谁去解决)交给JVM虚拟机去解决,打印错误信息 ,错误发生在什么类的什么位置.

二、解决异常的方式

try…catch…finally

try 指测试这个异常

catch 指捕获这个异常

finally 指异常结束后做的事

捕获异常的流程

发生异常

根据发生的异常,产生对应的异常现象

这个异常对象,会返回给调用者

如果调用者处理了这个异常(添加 try…catch),异常对象会跟catch 进行匹配,匹配上执行catch 中的语句,程序会继续运行

如果调用者没有处理这个异常,默认交给JVM虚拟机处理.打印错误信息,程序停止.

public static void main(String[] args){
try{
//  将可能发生异常的代码放入
int num = 10 / 0;
//  这块返回了异常对象  new ArithmeticException("/ by zero);
System.out.println(num);
}catch(ArithmeticException e e){
//  捕获异常  该怎么办??
//  catch 如何就能捕获异常

a381
//  ArithmeticException e = new ArithmeticException("/ by zero);
//  catch  会匹配这个异常对象 如果匹配上了  就执行 catch 中的语句
//  捕获异常后  程序会继续执行
System.out.println("无法除以0")
}
}


多catch 的捕获异常

异常处理的作用: 帮你来完善代码,让出现的错误,更容易找到.

public static void main(String[] args){
int[] arr = {1,2,3,4,5};
try{
// 测试异常代码
System.out.println(10/0);
// 产生 new ArithmeticException()
// 之后 就去匹配程序继续向下执行
System.out.println(arr[10]);
}catch(ArithmeticException e){
// 注意: 如果使用Exception 直接匹配异常
// 多个catch 同时捕获的时候  需要写在最后
// 写在后面的catch 相当于没写
System.out.println("除数不能为0");
}catch (ArrayIndexOutBoundsException e){
// 如果发生多个异常, 需要匹配多个catch
System.out.println("数组越界异常")
}catch (Exception e){
System.out.println("你出错了")
}
}


final finally finalize 有什么区别

final 修饰类 修饰方法 修饰属性

finally 一定会被执行

finalize 基类中Object 类中的方法 所有java中对象都有这个方法,该方法在垃圾回收的时候,被系统自动调用

当一块内存空间无人引用,这块内存就视为垃圾.

运行时异常 和 编译时异常

除了运行时异常,就是编译时异常

出现运行时异常 - – – 代码问题

出现编译时异常——– 问题提前预警,强制你去处理,不处理,编译不通过.

练习

// 需求
// 无限输入整数 ,存放到集合中,打印 输入quit 时  停止.
// 希望在输入字符串的时候,让程序也能继续运行.
System.out.println("请输入整数");
// 创建一个集合  保存输入的整数
ArrayList<Integer> list = new ArrayList<>();
// 创建Scanner
Scanner scanner = new Scanner(System.in);
while(true){
// 定义一个值
int parseInt = 0;
//  接收从键盘输入的值
String string = scanner.nextLine();
//  判断输入的是否为quit
if(string.equals("quit")){
break; //  是 跳出
}
try{
//  将字符串转换为int 类型
parseInt = Integer.parseInt(string);
//  将键盘输入的值  存储到集合中
list.add(parseInt);
//  最好写清楚报的哪一个异常
}catch (NumberFormatException e){
System.out.println("输入错误,请重新输入,或者输入quit");
}
//  打印该集合
System.out.println(list);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: