黑马程序员_异常架构和异常处理
来源:互联网 发布:用户数据安全保护 编辑:程序博客网 时间:2024/05/21 11:21
------- android培训、java培训、期待与您交流! ----------
异常:
异常也称为例外,是在程序运行过程中发生的、会打断程序正常执行的事件,几种常见的异常:
1、算术异常(ArithmeticException)。
2、没有给对象开辟内存空间时会出现空指针异常(NullPointerException)。
3、找不到文件异常(FileNotFoundException)。
所以在程序设计时,必须考虑到可能发生的异常事件,并做出相应的处理。这样才能保证程序可以正常运行。
Java的异常处理机制也有着面向对象的基本思想。在Java中,所有的异常都是以类的类型存在,除了内置的异常类之外,Java也可以自定义的异常类。此外Java的异常处理机制也允许自定义抛出异常。
举个例子说明:
public class ExceptionTest{public static void main(String args[]){int[] arr = new int[1];//数组大小为1个元素System.out.println("arr[1] = "+arr[1]);//数组角标是下标值超出所容许的范围}}
运算结果如下:C:\Users\lenovo\Desktop>javac ExceptionTest.javaC:\Users\lenovo\Desktop>java ExceptionTestException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at ExceptionTest.main(ExceptionTest.java:6)C:\Users\lenovo\Desktop>
错误的原因在于数组的下标值超出了最大允许的范围。Java发现这个错误之后,便由系统抛出“ArrayIndexOutOfBoundsException”这个种类的异常,用来表示错误的原因,并停止运行程序。如果没有编写相应的处理异常的程序代码,则Java的默认异常处理机制会先抛出异常、然后停止程序运行。
异常的处理格式:
格式1:try{要检查的程序语句;}catch(Exception e){异常发生时的处理语句;}finally{一定会运行到的程序代码;}格式2:try{要检查的程序语句;}catch(Exception e){异常发生时的处理语句;}格式3:try{要检查的程序语句;}finally{一定会运行到的程序代码;}
处理异常的顺序:
1、try程序块若是有异常发生时,程序的运行便中断并抛出“异常类所产生的对象”。
2、抛出的对象如果属于catch()括号内捕获的异常类,则catch会捕捉此异常并进到catch的块里继续运行。
3、try程序块是否有捕捉到异常,或者捕捉到的异常是否与catch()括号里的异常相同,最后一定会运行finally块里的程序代码,finally只有一种情况不会执行,当执行到System.exit(0);fianlly不会执行。finally的程序代码块运行结束后,程序再回到try-catch-finally块之后继续执行。
由上述过程可知,异常捕捉过程中做了两个判断:
1、try程序块是否有异常产生。
2、产生的异常是否和catch()括号内捕捉的异常相同。
finally块是可以省略的,如果省略了finally块不写,则在catch()块运行结束后,程序跳到try-cath块之后继续执行。
异常处理示例:
public class ExceptionTest{public static void main(String args[]){try//检查这个程序块的语句{int[] arr = new int[1];//数组大小为1个元素System.out.println("arr[1] = "+arr[1]);//数组角标是下标值超出所容许的范围}catch(ArrayIndexOutOfBoundsException e)//处理try块检测到的异常{System.out.println("数组超出范围");}finally//这个块的代码一定会执行{System.out.println("这里一定会被执行");}System.out.println("程序运行完成");}}
运行结果如下:C:\Users\lenovo\Desktop>javac ExceptionTest.javaC:\Users\lenovo\Desktop>java ExceptionTest数组超出范围这里一定会被执行程序运行完成C:\Users\lenovo\Desktop>
异常类的继承架构:
Throwable|--Error|--Exception|--IOException|--RuntimeException
习惯上将Error与Exception类统称为异常类,但本质上还是不同。Error类专门用来处理严重影响程序运行的错误,通常程序设计者不会去捕捉这种错误,其原因在于即使捕捉到它,也无法给予适当的处理,如JAVA虚拟机出错就属于一种Error。
不同于Error类的Exception类包含了一般性的异常,这些异常通常在捕捉到之后便可做妥善处理,以确保程序继续运行,如ExceptionTest.java里所捕捉到的ArrayIndexOutOfBoundsException就是属于这种异常。从异常类的继承架构可以看出:Exception类扩展出数个子类,其中IOException、RunntimeException是较常用的两种。RunntimeException即使不编写异常处理的程序代码,依然可以编译成功,而这种异常必须是在程序运行时才有可能发生,例如:数组的索引值超出了范围,与RunntimeException不同的是,IOException一定要编写异常处理的程序代码才行,它通常用来处理与输入/输出相关的操作,如读写文件等,当异常发生时,发生异常的语句代码会抛出一个异常类的实例化对象,然后把此对象与catch语句中的类的类型进行匹配并进行处理。
------- android培训、java培训、期待与您交流! ----------
详细请登录:http://edu.csdn.net/heima
- 黑马程序员_异常架构和异常处理
- 黑马程序员_ 异常处理
- 黑马程序员_异常处理
- 黑马程序员_异常处理
- 黑马程序员_异常处理.
- 黑马程序员_异常处理
- 黑马程序员_异常try,catch处理
- 黑马程序员_异常及处理
- 黑马程序员_异常处理学习笔记
- 黑马程序员_异常及处理
- 黑马程序员_Java基础_异常处理
- 黑马程序员 _学习笔记 异常处理
- 黑马程序员_异常处理篇
- 黑马程序员_Java基础_异常处理
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员_异常
- 黑马程序员_异常
- ADO.NET实用技巧
- lisp自动递归(续)
- 浅学设计模式之桥接<bridge>模式(2)
- CSDN网站打开速度不是一般的慢啊~
- Linux内核下载地址及编译基本命令
- 黑马程序员_异常架构和异常处理
- wireshark过滤抓包
- MSSQL下拿WEBSEHLL
- BoundField与TemplateField的区别
- C++的文件操作
- NK 2122 太空飞行计划问题
- PHP 5.4.x 安装dedecms最新版后台登陆 网页一片空白
- C++中int转string方法合辑
- android 网络应用轻量框架