您的位置:首页 > 职场人生

黑马程序员 异常处理机制的总结

2012-12-29 15:09 190 查看
异常的总结

异常就是 程序中在运行过程中可能会发生的不正常的现象,异常有很多种还有一个继承体系,最上面的是Throwable,最常用的是Exception和他的子类。

异常

1、异常的概念:

①、就是程序在运行过程中,可能会发生的不正常现象异常有很多种,还有一个继承的体系,最上面的是Throwable,最常用的是Exception和它的子类。

②、Error这个分支的异常在程序中不可以捕获和处理。

Error:用于指示合理的应用程序不应该试图捕获的严重问题。这种情况是很大的问题,大到你不能处理了,你不用管它。比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。

③、RuntimeException是可以选择不可以进行捕获和处理

Exception:它指出了合理的应用程序想要捕获的条件。Exception又分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。《effective java》指出:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。

注:常见的异常RuntimeExcepiton有IllegalArgumentException、IllegalStateException、NullPointerException、IndexOutOfBoundsException等等。对于那些CheckedException就不胜枚举了,我们在编写程序过程中try...catch...捕捉的异常都是CheckedException。io包中的IOException及其子类,这些都是CheckedException。

常见异常必须记住:

ArithmeticException 算术异常(算术中出现)

ArrayIndexOutofBoundsException 越界异常

NullpointerException 控指针异常

classNotFoundException 包名、类名没有导入jar包

NumberFormatException 数字格式化异常

InputMismatchException 不匹配异常

OutofmemorymatchException 内存溢出

2、处理异常的方法:

①、try—catch—finally

②、throws声明抛出异常

①格式

try{

需要被测试的代码

}

catch(异常类型 变量){

异常处理的代码;

}

finally{

一定要执行的语句

}

Age一:

ackage cn.edu.csdn.net;

class Demo{

int div(int a,int b){

return a/b;

}

}

public class ExceptionDemo {

public static void main(String[] args){

Demo d=new Demo();

try{

int x = d.div(4,1);

System.out.println("x="+x);

}

catch(Exception e){

//System.out.println(e.getMessage()); //打印异常名称

//System.out.println(e.toString()); //打印异常名称、信息

e.printStackTrace();//打印异常名称、信息、异常出现的位置(jvm默认)

}

finally{ //注:finally块至少执行一次

System.out.println("over");

}

}

}

Age二:

package cn.edu.csdn.net;

import java.util.*;

public class Test {

public static void main(String[] args) {

// TODO 自动生成方法存根

try{

Scanner in =new Scanner(System.in);

System.out.print("请输入被除数:");

int num=in.nextInt();

System.out.print("请输入除数: ");

int num2=in.nextInt();

System.out.print(num+"÷"+num2+"="+num/num2);

}

catch(Exception e){

System.out.println("除数不能为零!!");

e.printStackTrace();

}

finally{

System.out.println("感谢使用本程序!");

}

}

}

注:catch中可以有多个,但有顺序(不要定义多余的catch块),如果多个catch的异常出现继承关系,父类异常catch块放在最下面

finally块至少执行一次;

②格式 throws用在方法声明之后,大括号之前

3、Throw和Throws的区别

①、作用上不同

Throw程序员自行产生并抛出的异常

Throws用于声明该方法内抛出异常

②、使用位置不同

Throw位于方法体内部可以作为单独语句使用

Throws必须跟在方法参数列表的后面,不能单独使用

③、内容不同

Throw抛出一个异常对象,且只能是一个

Throws后面跟异常类,且可以跟多个异常类。

总结:(一句话)后面带S说明可以跟多个类型,后面不带S说明他后面只能跟一个对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: