1.定义
异常指的是在程序运行过程中发生的异常事件
2.java异常分类
(1).检查异常:java强制要求要解决或者抛出异常
(2).非检查异常(运行时异常):不必强制去处理可能发生的异常
public static void test(int i) throws UnsupportedEncodingException {
int j = 5/i; //这里的i有可能等于0,但是只有在运行的时候才会知道
System.out.println(j);
String filePath = "C:\\Users\\MES\\Desktop\\gggg.txt";
File file =new File(filePath);
//检查异常 java会强制你处理或者抛出异常
try {
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(filePath),"UTF-8");
} catch (UnsupportedEncodingException e) {
throw e;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
3.Throwable
Throwable 是 错误(Error)和 异常(Exception)的父类
java通常不捕获错误;只对Exception
Exception有两个主要的子类IOException和RuntimeException
RuntimeException里面的子类是unchecked异常,既未经检查的异常,Exception下的除此之外的子类都是检查异常
4.异常捕获(try/catch)
java中使用try/catch捕获异常,可以嵌套使用
5.Finally
无论是否发生异常都不会影响Finally里面的程序的执行
一般用来关闭或者释放资源
6.异常抛出和声明(throws/throw)
(1)异常抛出(throw):确定会引发异常
(2)异常声明(throws):在定义方法上,代表可能会出现异常
7.自定义异常
1.先写一个方法,然后继承Throw或者Exception等方法
package throwable;
public class MyThrow extends Exception {
public MyThrow(){
super();
System.out.println("我自己的异常!!!");
}
}
然后在代码中抛出自己的定义的异常类
public static void test(int i) throws UnsupportedEncodingException, MyThrow {
String filePath = "C:\\Users\\MES\\Desktop\\gggg.txt";
File file =new File(filePath);
try {
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(filePath),"UTF-8");
throw new MyThrow(); //这里抛出自己定义的异常
} catch (UnsupportedEncodingException e) {
throw e;
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
最后在使用这个方法时,处理这个异常类
public static void main(String arg[]) throws UnsupportedEncodingException {
try {
test(0);
} catch (MyThrow myThrow) {
myThrow.printStackTrace();
}
}
最终结果:
throwable.MyThrow
我自己的异常!!!
at throwable.Dome01.test(Dome01.java:21)
at throwable.Dome01.main(Dome01.java:9)