异常
1.继承关系
Throwable:
Error:不能处理的 XXXError
Exception:能处理的 xxxException
运行时异常: RuntimeException
NullPointerException,ArrayIndexOfBoundsException
StringIndexOfBoundsException,ArithmeticException等
编译时产生的异常:
IOException,FileNotFoundException,
InterruptedException,SQLException 等
2.运行时异常不强制处理,如果代码写的严谨,可以避免运行时异常的产生
编译时产生的异常必须处理
3.异常处理的两种方式:
throws 抛出异常(声明异常)
try-catch块捕获异常
异常代码块:在日志文件中保存堆栈信息
外行,翻译异常信息
检查代码:直接打印堆栈信息
4.异常块的正确使用语法
try-catch
try-catch-finally
try-catch-catch…finally
try-finally:语法是正确的,但不能捕获异常
5.try-catch可以嵌套使用try-catch块
package cn.tedu.demo;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class Demo3 {
//运行异常
//运行时异常,如果代码写的严谨,可以避免运行时异常
public static void test(){
String[] names=null;
// java.lang.NullPointerException
//System.out.println(names[0].substring(0));
int[] num={
2};
//java.lang.ArrayIndexOutOfBoundsException
System.out.println(num[1]);
}
//编译时异常
//throws抛出异常,(声明异常)并不解决
public static void test2() throws FileNotFoundException{
FileReader fr =new FileReader("a.txt");
}
//处理异常的第二种方式,try-catch方式,上面是抛出异常处理
//try-catch是对代码做了处理,之后将不会再报错的
//抛出异常则是把错误抛出去了,之后还会产生错误
public static void test3(){
try {
FileReader fr =new FileReader("a.txt");
Thread.sleep(1000);
}
//可以有多个catch块,但是不能有多个try块,因为catch不能表示前面的错误都
//被捕获,它只捕获最近的try块,前面的try块不包含不被捕获
catch (