黑马程序员技术交流社区
标题:
异常
[打印本页]
作者:
GYSWL
时间:
2014-8-20 18:49
标题:
异常
目标黑马……努力ing……
1.异常是什么?
第一,异常模拟的是现实世界中“不正常的”事件。
第二,java中采用“类”去模拟异常。
第三,类是可以创建对象的。例如:
NullPointerException e = 0x1234;
e是引用类型,e中保存的内存地址指向堆中的“对象”
这个对象一定是NullPointerException类型。
这个对象就表示真实存在的异常事件。
NullPointerException是一类异常。
2.异常机制的作用?
java语言为我们提供一种完善的异常处理机制,
作用是:程序发生异常事件之后,为我们输出详细的信息,
程序员通过这个信息,可以对程序进行一些处理,使程序
更加健壮。
处理异常有两种方式:
1.声明抛出 throws
2.捕捉 try...catch..
以下程序演示第一种方式:声明抛出,在方法声明的位置上使用throws关键字向上抛出异常。
<font color="black">import java.io.*;
public class ExcetionTest{
public static void main(String[] args){
try{
m1();
}catch(FileNotFoundException e){
System.out.println("m1处理异常!");
}
//使用throws处理异常不是真正处理异常而是推卸责任。
//谁调用的就会抛给谁。
//上面的m1方法如果出现了异常,如果采用的throws上抛,给了JVM,JVM遇到这个异常就会退出JVM,下面的这个代码不会执行.
//System.out.println("Hello World");
}
//使用throws处理异常谁调用的就会抛给谁。
public static void m1()throws FileNotFoundException{
m2();
}
//使用throws处理异常谁调用的就会抛给谁。
public static void m2()throws FileNotFoundException{
m3();
}
//使用throws处理异常谁调用的就会抛给谁。
public static void m3()throws FileNotFoundException{
new FileInputStream("c:/a.txt");
}
}
</font>
复制代码
处理异常的第二种方式:捕捉.. try...catch...
语法:
try{
可能出现异常的代码;
}catch(异常类型1 变量){
处理异常的代码;
}catch(异常类型2 变量){
处理异常的代码;
}....
1.catch语句块可以写多个.
2.但是从上到下catch,必须从小类型异常到大类型异常进行捕捉。
3.try...catch...中最多执行1个catch语句块。执行结束之后try...catch...就结束了。
<font color="black">
</font><p><font color="black"> import java.io.*;</font></p><p><font color="black">public class ExceptionTest05{
public static void main(String[] args){
//以下代码编译无法通过,因为FileNotFoundException没有处理.
/*
try{
//FileNotFoundException
FileInputStream fis = new FileInputStream("c:/ab.txt");
}catch(ArithmeticException e){ //捕获的异常是算术异常
}
*/
//编译通过
/*
try{
//FileNotFoundException
FileInputStream fis = new FileInputStream("c:/ab.txt");
}catch(FileNotFoundException e){
}
*/
//以下程序编译无法通过
//因为还有更多IOException没有处理.
/*
try{
//FileNotFoundException
FileInputStream fis = new FileInputStream("c:/ab.txt");
fis.read();
}catch(FileNotFoundException e){
}
*/
//编译可以通过
try{
//FileNotFoundException
FileInputStream fis = new FileInputStream("c:/ab.txt");
fis.read();
}catch(FileNotFoundException e){
}catch(IOException e){
}
//编译通过.
/*
try{
FileInputStream fis = new FileInputStream("c:/ab.txt");
fis.read();
}catch(IOException e){
}
*/
//编译无法通过
//catch可以写多个,但是必须从上到下,从小到大捕捉。
/*
try{
FileInputStream fis = new FileInputStream("c:/ab.txt");
fis.read();
}catch(IOException e){
}catch(FileNotFoundException e){
}
*/
}
}</font></p>
复制代码
以上内容是本人学习笔记,0基础自学,难免有错,希望指出有错地方,成长自己也提高别人……
作者:
dreamseekerkun
时间:
2014-8-20 19:11
总结不错,又巩固一下。
作者:
象牙
时间:
2014-8-20 19:22
路过 学一遍
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2