java 异常处理
2016-07-27 14:55
411 查看
一.异常发生的原因:
1.用户输入非法数据。
2.要打开不存在的文件。
3.网络通信时连接中断,或者JVM内存溢出。
二。异常类型:
1.检查性异常。
2.运行时异常。
3.错误。
三。捕获异常(try/catch)
语法:
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
实例:越界访问数组时:
try {
int[] intArr = new int[2];
System.out.println("Access element three:"+intArr[3]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :"+e);
}
System.out.println("Out of the Block");
结果:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: length=2; index=3
Out of the Block
四。多重捕获块。
语法:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}
当代码发生异常时,异常会抛给第一个catch块。如果异常类型不匹配,则异常会抛给第二个catch块,以此类推,直到异常被捕获或者通过所有catch块。
五。throw/throws关键字。
一个方法如果没有捕获一个检查性异常,那么该方法必须使用throws关键字来声明。throws放在方法签名的尾部。
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
六。finally关键字。
用于创建在try代码块后面执行的代码块。
无论是否发生异常,finally代码块中的代码都会被执行。
语法:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
* catch不能独立于try存在。
* finally代码块是可选的。
* try代码块后不能既没catch也没finally。
* try,catch,finally之间不能添加任何代码。
七。自定义异常:
1.所有异常都是Throwable的子类。
2.检查性异常继承于Exception类。
3.运行时异常继承于RuntimeException类。
例如:
class MyException extends Exception{
}
八。通用异常
在java中定义了两种类型的异常和错误。
* JVM(Java虚拟机)异常:由JVM抛出的异常或错误。例如:NullPointerException类,ArrayIndexOutOfBouncesException类,ClassCastException类。
* 程序级异常:由程序或者API程序抛出的异常。例如:LlegalArgumentExcetion类,LllegalStateException类。
1.用户输入非法数据。
2.要打开不存在的文件。
3.网络通信时连接中断,或者JVM内存溢出。
二。异常类型:
1.检查性异常。
2.运行时异常。
3.错误。
三。捕获异常(try/catch)
语法:
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
实例:越界访问数组时:
try {
int[] intArr = new int[2];
System.out.println("Access element three:"+intArr[3]);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("Exception thrown :"+e);
}
System.out.println("Out of the Block");
结果:
Exception thrown :java.lang.ArrayIndexOutOfBoundsException: length=2; index=3
Out of the Block
四。多重捕获块。
语法:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}
当代码发生异常时,异常会抛给第一个catch块。如果异常类型不匹配,则异常会抛给第二个catch块,以此类推,直到异常被捕获或者通过所有catch块。
五。throw/throws关键字。
一个方法如果没有捕获一个检查性异常,那么该方法必须使用throws关键字来声明。throws放在方法签名的尾部。
一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
六。finally关键字。
用于创建在try代码块后面执行的代码块。
无论是否发生异常,finally代码块中的代码都会被执行。
语法:
try{
// 程序代码
}catch(异常类型1 异常的变量名1){
// 程序代码
}catch(异常类型2 异常的变量名2){
// 程序代码
}finally{
// 程序代码
}
* catch不能独立于try存在。
* finally代码块是可选的。
* try代码块后不能既没catch也没finally。
* try,catch,finally之间不能添加任何代码。
七。自定义异常:
1.所有异常都是Throwable的子类。
2.检查性异常继承于Exception类。
3.运行时异常继承于RuntimeException类。
例如:
class MyException extends Exception{
}
八。通用异常
在java中定义了两种类型的异常和错误。
* JVM(Java虚拟机)异常:由JVM抛出的异常或错误。例如:NullPointerException类,ArrayIndexOutOfBouncesException类,ClassCastException类。
* 程序级异常:由程序或者API程序抛出的异常。例如:LlegalArgumentExcetion类,LllegalStateException类。
相关文章推荐
- java设计模式之访问者模式
- install java on ubuntu and set defalut java version
- java内存溢出的几种情况
- Mac编译OpenJDK7(8)和Eclipse调试Hotspot
- 搭建struts2环境
- 浅析Java验证码生成库JCaptcha
- Maven Spring BOM (bill of materials)
- java JNI 实现原理 (一)
- Error、Exception分析
- Spring和MyBatis整合
- java-单例设计模式
- java swing 开发
- Spring Transaction Rollback
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- Spring Framework Artifacts
- java正则表达式 过滤特殊字符的正则表达式
- MyEclipse配置svn和maven
- leetcode134 Gas Station java 算法
- intellij idea创建的maven找不到mybatis映射器xml
- Java JDK的安装以及环境变量的配置