J2SE第四章——异常(二)
来源:互联网 发布:sql数据库服务器搭建 编辑:程序博客网 时间:2024/06/04 19:56
新知识点:
1.共有5个关键字 4个已学 try catch throw throws
问题:
1.如果不抛异常,则顺序执行,但越过catch语句块,然后往下执行catch之后的语句块
2.如果try中的代码抛出了异常,那么try中余下的代码还执不执行? -------不执行
2 跳转到相应的catch语句块中,执行catch里面的代码
如果catch语句块使用了throw,那么throw后的语句(无论是在catch语句之中还是catch语句之后)不再执行
确保代码一定能够执行 finally
try {} catch () {} finally {}
3.一张图:(组织关系图): 很多异常类----OOP 继承 父类 Object
类: Throwable
有两个分支 Error Exception
(系统环境错误) (程序员违背了某种规则)
..... RuntimeException .....
ArithmeticException ArrayIndexOutofBoundsException NullPointerException
try : 可能发生异常的代码要封装在try语句块中 会增加代码量。设计师把一些经常发生的异常进行“处理”,这些代码可以不用放在try 中。RuntimeException 中的异常可以不用写在try语句中
public class B {public static void main(String[] args) {}public static void m1(int a) {int result = 0;int[] arr = {1,2,3};String str = null;//String str = new String();result = 10/0;//ArithmeticExceptionSystem.out.println(arr[4]); //ArrayIndexOurofBoundsExceptionStr.split(",");//NullPointerException}}
4.先捉小的,后捉大的
如果try 语句块抛出多种异常,那么:
4.1 规范格式:用catch 分别捕捉-----catch语句块的顺序
是不是抛出异常的顺序?
---不是~!因为try抛出异常,JVM 会跳转到相应的catch 执行
catch捕捉到的多个异常类,如果存在“继承”关系,必须考虑“父类-子类”的顺序问题:
父类异常:位于子类异常的后面:------没有问题
父类异常:位于子类异常的前面:------不行!因为后面的子类异常永远都没有机会执行
try {result = 10/0;System.out.println(arr[5]);Str.split(",");}catch (NullPointerException e) {} catch (ArrayIndexOutofBoundsException e) {} catch (ArithmeticException e) {} catch (RuntimeException e) {//父类}
5. 自定义异常
模拟登陆 输入用户名zs, 提示正确,否则提示错误。
自定义异常 封装用户名不正确信息
语法:
继承自Exception(必须写 try catch)/ RuntimeException(可以不写 try catch )
================继承自Exception=======================
class UsernameNotFoundException extends Exception {// className nethodName linenumber (前三者都不能确定)info public UsernameNotFoundException(String info ) {super(info);//super("用户名不存在");}}public class B {public static void main(String[] args) {try {login();} catch (Exception e) {System.out.println("用户名不正确");}}//登陆public static String login() throws Exception{String name = getName();if ("zs".equals(name) {System.out.println("登陆成功");} else {//登陆不成功,认为是运行期错误---异常 -JDK 没有内置“用户名错误”的异常---已定义异常Exception e = new UsernameNotFoundException();throw e;}//键盘输入用户名public static String getName() throws Exception {return new BufferedRead(new InputStreamReader(System.in)).readLine();}}=====================继承自RuntimeException=============================
class PasswardErrorException extends RuntimeException {public PasswardErrorException(String info) {super(info);}}public class Test {public static void main(String[] args) {checkPwd(); //受控异常 不用写try catch /*try {checkPwd();} catch (PassWardErrorException) {System.out.println("密码错误");}*/}public static void checkPwd() {if ("123".equals(pwd)) {System.out.println("跳转到成功页面");} else {throw new PassWardErrorException("密码错误");}}public static String getPwd() {String str = null;try {str = new BufferedRead(new InputStreamReader(System.in)).readLine();} catch (IOException e) {}}}
- J2SE第四章——异常(二)
- J2SE第四章——异常(一)
- 马士兵J2SE-第四章-异常处理
- J2SE基础摘要——异常处理
- 【J2SE】——异常理论篇
- 【J2SE】——异常实践篇
- J2SE 第四章 常用类
- J2SE第二章——Java基本语法(二)
- J2SE第三章——面向对象(二)
- J2SE第六章——常用类(二)StringBuffer类
- J2SE第七章——集合框架(容器)二
- J2SE总结(二)——线程
- J2SE 第四章 java常用类
- 异常---J2SE
- JAVA技术发展——你不知道的J2SE(二)
- J2SE第九章——线程同步
- J2SE第十章——Socket
- ——J2SE, J2EE
- Eclipse - changing font size in project/package explorer
- CSS中first-child和nth-child的讲解
- 设计模式--命令模式
- Windows同时使用Python 2.7和Python 3.5以及pip
- java中使用反射获取对象的属性和属性值
- J2SE第四章——异常(二)
- Apache tags-tiles翻译
- HDU1004
- 元素和鼠标事件的距离属性
- Mac环境下svn的使用
- websocket+php实现前后端实时通信
- 学习笔记之JavaSE(22)--多线程2
- UVa1339 Ancient Cipher
- Java Properties 文件书写规范