Java 异常处理
2017-12-25 20:15
183 查看
一、异常处理
Throwable(异常处理的父类)
Error 系统崩溃 数据库崩溃(跟代码没关系)
Exception 异常(是跟代码有关系的)
RuntimeException 运行时异常
出现异常 如何解决?
解决的方式:
自己去解决
把问题抛给上级去解决(谁调用的main函数 谁去解决)交给JVM虚拟机去解决,打印错误信息 ,错误发生在什么类的什么位置.
二、解决异常的方式
try…catch…finally
try 指测试这个异常
catch 指捕获这个异常
finally 指异常结束后做的事
捕获异常的流程
发生异常
根据发生的异常,产生对应的异常现象
这个异常对象,会返回给调用者
如果调用者处理了这个异常(添加 try…catch),异常对象会跟catch 进行匹配,匹配上执行catch 中的语句,程序会继续运行
如果调用者没有处理这个异常,默认交给JVM虚拟机处理.打印错误信息,程序停止.
多catch 的捕获异常
异常处理的作用: 帮你来完善代码,让出现的错误,更容易找到.
final finally finalize 有什么区别
final 修饰类 修饰方法 修饰属性
finally 一定会被执行
finalize 基类中Object 类中的方法 所有java中对象都有这个方法,该方法在垃圾回收的时候,被系统自动调用
当一块内存空间无人引用,这块内存就视为垃圾.
运行时异常 和 编译时异常
除了运行时异常,就是编译时异常
出现运行时异常 - – – 代码问题
出现编译时异常——– 问题提前预警,强制你去处理,不处理,编译不通过.
练习
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); }
相关文章推荐
- (转)用枚举来处理java自定义异常
- Java 异常处理的原则是什么
- Java异常处理
- 突如其来的"中断异常",我(Java)该如何处理?
- java的异常处理。。。java知识总结(工作一年半差不多两年了,感觉是时候总结一下java,文章内容为本人观点)
- 用java实现php式的字典使用方式(未做异常处理)
- 【Java面试题】21 Java中的异常处理机制的简单原理和应用。
- Java -- 异常的捕获及处理 -- Exception类与RuntimeException类
- 详解Java中异常处理机制
- Java study 09day--异常处理
- Java中的异常及其处理机制
- Java Web开发初级篇之常见异常处理
- java中异常处理finally和return语句的执行顺序
- Java异常处理机制
- Java中的异常处理机制的简单原理和应用以及连接池理解
- 详解Java中异常处理机制
- java异常处理原则
- java 异常处理
- Java异常分类与处理 -- JAVA 基础