java异常机制(学习笔记)
来源:互联网 发布:dota2比赛视频软件 编辑:程序博客网 时间:2024/05/16 01:14
1、捕捉异常
在概念之前,先看一看常用的try-catch语句块用法:
package com.flz.exception;public class Take{ public static void main(String[] args) { try { String string="lili"; System.out.println(string+"的年龄是:"); int age=Integer.parseInt("20L");//数据类型转换。 System.out.println(age); } catch (NumberFormatException e) { e.printStackTrace();//输出异常性质。 } System.out.println("program over!"); }}
结果:
lili的年龄是:java.lang.NumberFormatException: For input string: "20L" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at com.flz.exception.Take.main(Take.java:12)program over!
笔记:
- try语句中包含可能出现异常的程序代码。
- printStackTrace()方法输出异常比较完整的信息
- getMessage()输出错误性质,toString()给出异常类型与性质。
- 养成良好的变成习惯,最好在catch代码块中写入处理异常的代码。
2、finally语句块
1、finally语句块的作用:希望catch块中没有抛异常的代码,希望catch块抛异常的代码不会影响资源的关闭。
2、finally语句块在以下四种特殊情况下不会被执行
- 在finally语句块内发生了异常。
- 在前面的代码中使用了System.exit()退出程序。
- 程序所在的线程死亡。
- 关闭cpu。
3、自定义异常
描述:
使用java内置的异常类可以描述编程时出现的大部分异常情况。除此之外,用户只需要继承Exception类即可自定义异常类。
步骤:
- 创建自定义异常类。
- 在方法中通过throw关键字抛出异常对象。
- 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句块捕获并处理,否则在方法的声明出通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
- 在出现异常方法调用者中捕获并处理异常。
例子:
package com.flz.exception;public class MyException extends Exception//自定义异常{ public MyException(String message)//构造方法 { super(message);//父类构造方法 }}
package com.flz.exception;public class Tran{ //在方法的声明出通过throws关键字指明要抛出给方法调用者的异常 static int avg(int num1,int num2) throws MyException { if(num1<0||num2<0) { throw new MyException("参数不可以是负数");//在方法中通过throw关键字抛出异常对象。 } if(num1>100||num2>100) { throw new MyException("参数不能大于100");//在方法中通过throw关键字抛出异常对象。 } return(num1+num2)/2; } public static void main(String[] args) { try{ int result=avg(108, 12); System.out.println(result); }catch(MyException e){ System.out.println(e); } }}
运行结果:com.flz.exception.MyException: 参数不能大于100
使用throws关键字抛出异常:
例子:
package com.flz.exception;public class ThrowsTest{ static void pop() throws NegativeArraySizeException { int[]arr=new int[-3]; } public static void main(String[] args) { try { pop(); } catch (NegativeArraySizeException e) { System.out.println("pop方法抛出的异常(数组越界)"); } }}
运行结果:`pop方法抛出的异常(数组越界)
throw和throws的区别:
(注:摘自百度,觉得比较好理解的答案)
throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。
throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
throws说明你有那个可能,倾向。
throw的话,那就是你把那个倾向变成真实的了。`
另外:
(摘自: http://cuityang.iteye.com/blog/1969489)
基类为Throwable,Error和Exception继承Throwable
Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形。应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出)。
Exception体系包括RuntimeException体系和其他非RuntimeException的体系 :
① RuntimeException:RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等。处理RuntimeException的原则是:如果出现RuntimeException,那么一定是程序员的错误
(2)其他非RuntimeException(IOException等等):这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误。
在java中,异常分为两种,运行时异常(也就是uncheckException)和已检查异常checkException
checkException是必须要处理的,也就是不能抛出,必须通过try-catch来完成,不处理的话是不能进行编译的,既然是checked异常,catch clause里理应做些有用的事情??修复它!catch里为空白或者仅仅打印出错信息都是不妥的!为空白就是假装不知道甚至瞒天过海,但是,出来混迟早 要还的,迟早会报unchecked异常并程序挂起 。
- java异常机制(学习笔记)
- [学习笔记]Java异常机制
- [学习笔记]Java异常机制
- java学习笔记-java异常处理机制
- 疯狂Java学习笔记(49)------------异常处理机制
- Java学习笔记(49)------------异常处理机制
- 异常机制学习笔记
- 异常机制—学习笔记—java中异常处理
- C++学习笔记(九) 异常机制
- Java学习笔记(异常)
- Java异常报错机制-学习笔记(2)
- JAVA学习笔记_关于异常机制处理问题
- 黑马程序员——学习笔记07.Java异常机制
- Java并发学习笔记(二)-Executor捕获异常机制
- Java笔记之异常机制
- java笔记之异常机制
- Java SE学习笔记:Java的异常机制和异常的处理
- 深入学习java异常机制
- eclipse中 配置显示JDK代码 问题
- Android多媒体编程
- IOS学习之UITableView
- 数组的那些题
- Gym 101149A Balls in Urn
- java异常机制(学习笔记)
- 响应式开发从原理到实战案例(九):响应式改版完整案例-静态页面制作
- Android多媒体
- Unity5与Android交互通信(使用Android Studio2.4) 详细操作一
- 模板的简单理解
- c:forEach>用法
- 事件模板
- kmp算法
- Android内容提供者