try:
关键字
{
1、使用它的目的?
顾名思义:试一试嘛。一段会报错的代码,如果没有try的话,出现异常会导致程序崩溃。而try则可以保证程序的正常运行下去。
2、举例?
try
{
int i = 1/0;
System.out.println("我还有幸执行到吗");// 发生异常以后,后面的代码不能被执行
}
catch(Exception e)
{
System.out.println(e.ToString());
}
一个计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错。
}
catch:
{关键字
1、它的意思是?
如果从上一段try{}代码捕捉到异常,则执行catch{}内代码
2、Exception异常类的意义?
Exception:它指出了合理的应用程序想要捕获的条件。
Exception分为两类:CheckedException,UncheckedException。
CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。UncheckedException又叫做RuntimeException。《effective java》指出:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。
我们在编写程序过程中try...catch...捕捉的异常都是CheckedException。io包中的IOException及其子类,这些都是CheckedException。
他是一个类,可以被继承。
3、举例?
看try那一条的例子
}
Exception:
异常类
{
1、常用的异常类有哪些?
1)java.lang.nullpointerexception
异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象
2)java.lang.classnotfoundexception
异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可
3) java.lang.arithmeticexception
这个异常的解释是"数学运算异常",比如程序中出现了除以零这样的运算就会出这样的异常
4) java.lang.arrayindexoutofboundsexception
异常的解释是"数组下标越界"
5)java.lang.illegalargumentexception
这个异常的解释是"方法的参数错误"
6)java.lang.illegalaccessexception
这个异常的解释是"没有访问权限",当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。
其他还有很多异常。
2、如何知道根类Exception是哪个异常类?
用instanceof可以if (e instanceof NullPointerException) {}。
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
result = object instanceof class
如果存在object是class 的一个实例则result 返回true 否则false
}
throw:
关键字
{
1、它的意思?
抛出某种异常。一般一个catch接受上一个try试出的异常,返回到catch中的exception变量中。catch总是接收上一个try的异常,但要接收其他try的异常,就需要用到抛出了。
2、使用方法?
public class Rethrow {
public static void readFile(String file) throws FileNotFoundException
{
try
{
}BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
catch (FileNotFoundException e)
{
e.printStackTrace();
System.err.println("不知道如何处理该异常或者根本不想处理它,但是不做处理又不合适,这是重新抛出异常交给上一级处理");
//重新抛出异常
throw e;
}
}
public static void printFile(String file)
{
try
{
readFile(file);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
printFile("D:/file");
}
}}
finally:
{关键字
1、它的含义?
finally在异常处理时提供finally块来执行所有清除操作。主要与try-catch-finally配合使用。
2、它的用法?
finally语句块的作用是无论出现什么情况,finally块中的语句一定会被执行,并且是在return之前执行。不管你return写在哪里。
根据JAVA规范,如果try-finally或者catch-finally中都有return,则2个return都执行并最终返回调用者那里的是finally中的return,如果finally中没有return则返回的是catch中的return,但是finally中的代码也是要执行的。
3、举例?
public class TestException
{
public TestException()
{}
boolean testEx() throws Exception
{
boolean ret = true;
try
{
ret = testEx1();
}
catch (Exception e)
{
System.out.println("testEx, catch exception");
ret = false;
throw e;
}
finally
{
System.out.println("testEx, finally; return value=" + ret);
return ret;
}
}
}