简单的异常处理
来源:互联网 发布:筑业标书制作软件 编辑:程序博客网 时间:2024/05/17 02:35
复习
第一章 异常处理
异常:运行时发生的错误
异常处理:处理这些异常
异常处理的方法
异常处理机制
1 Java运行时如果出现异常,会生成一个异常对象,
2 生成的异常对象传递给Java运行系统叫抛出异常
3 运行机制得到这个异常时,会寻找处理这个异常的 方法,如果找到方法,则会把当前的异常交给这个 方法处理,这叫做捕获异常
4 如果找不到方法来处理这个异常,则运行机制将会 停止,Java程序也会退出
Error错误
一般不能由程序员直接处理,必须要交由操作系统
运行时异常
RuntimeException运行时异常,java编译器允许程 序员不作处理
非运行时异常
除运行时异常其他的交由Exception继承来的异常
Java程序要求必须捕获或声明这种异常,否则编译 会报错
Try catch finally throws throws
Java 中允许的处理异常的方式
自行处理:可能引发异常的语句会封入在try块中
处理异常的语句会封入在catch中
回避异常:在方法声明中包含throws语句,存在潜在 的异常,如果发生异常,则必须由调用者 来处理异常
Try...catch
形式一:最基本的异常处理
try{
可能发生异常的代码块;
}catch(Exception e){
异常处理
}
补充:
catch块中的异常处理一般有两种形式
1.System.err.println();输出异常信息
2.e.printStackTrace(); 建议使用这种
在命令行打印异常信息在程序中出错的位置及原因
Finally
finally
形式二:如果有些代码无论发生什么情况都需要执行, 可以把这些代码放到finally块中
例如:数据库的关闭,网络的关闭等等....
try{
可能发生异常的代码块;
}catch(Exception e){
异常处理代码块;
}finally{
一定需要执行的代码块;
}
注意:多重catch时,异常子类一定要位于异常父类之前
try{
…...
} catch(Exception e) {
……
4 } catch(ArrayIndexOutOfBoundsException e) {//此处报错,因为前面catch可以捕获所有异常,此处代码没用
……
}
throws throw
区别
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。好的编程习惯:
1、在写程序时,对可能会出现异常的部分通常要用try{...}catch{...}去捕捉它 并对它进行处理;
2、用try{...}catch{...}捕捉了异常之后一定要对在catch{...}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
3、如果是捕捉IO输入输出流中的异常,一定要在try{...}catch{...}后加finally{...}把输入输出流关闭;
4、如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。
自定义异常
Java中的异常有时候不能被捕获,这时候需要我们自 己定义异常
注:自定义异常需要继承Exception及其子类
案例:
class MyException extends Exception{/自定义异常
public MyException(){
super("我自己定义的异常!");
}
}
public class TestException {
public static void main(String[] args){
try {
throw new MyException();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 异常的简单处理
- 简单的异常处理
- 简单的 C++异常处理
- java简单异常的处理
- 简单的PHP异常处理
- 简单异常,简单处理
- 异常处理,简单而又复杂的问题
- 简单的JavaEE异常处理机制
- 异常处理,简单而又复杂的问题
- c++ 异常处理 的简单学习
- Struts2异常处理的简单示例
- 《黑马程序员》io---简单的异常处理
- 异常处理,简单而又复杂的问题
- 【C++】异常处理的简单应用。
- 简单的全局404,500异常处理
- java图形界面异常处理的简单利用
- 异常简单处理的4种方法
- ARM的异常处理方式简单介绍
- A + B Problem II(大数加法hd1002)
- Android-------多渠道打包
- callback机制
- [JZOJ5365]通信
- bzoj2962 序列操作 线段树
- 简单的异常处理
- hdu 4465 概率+数学处理
- 3532:最大上升子序列和(2.6基本算法之动态规划)
- Winform(XtraReport)实现打印方法(转载)
- 比特率与波特率的区别与联系
- hdu-5924-Mr. Frog’s Problem
- CVTE前端面试
- (三)几种排序算法的学习总结(快速排序)
- Candies SPFA + 栈