Java中的异常(Throwable)分为两类:异常Execption和错误Error。
Error,也就是错误,这个是不可避免的,出现的问题使得应用停止,例如:服务器损坏、内存溢出等。在java中所有的错误都继承自Error类,这个是不可控的。
Exection,也就是异常,是可控的,异常又分为编译时异常和运行时异常,编译时异常是由编码语法错误导致的,在编译时期就可以看出来,即使进行修改。代码如下:
复制代码
1
2
3
4
5public class ErrorTest { public static void main(String[] args) { String s = 5;//这样就会直接报错,开发者可以直接看到 } }
运行时异常是由业务逻辑导致的,只有到了运行时才可以看出来。代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12public class ErrorTest { public static void main(String[] args) { int i = 5; int j = 4; add(i, j);//5+4=1 System.out.println(i / 0);//这里违反了除法的基本逻辑,运行时也会报错 } public static void add(int i , int j) { //这里就是编译时异常,有逻辑不清造成 System.out.println("i+j="+(i - j)); } }
因为当程序出现异常时便不再继续往下执行代码,所以异常需要处理,这里的异常值得是Exection,如果程序发生Error,应用会直接停止,而不是不继续往下执行代码,错误是控制不了的,只能重启应用,所以错误一定要避免。Java中解决异常的方式有抛出异常和捕获处理异常。所谓抛出异常就是指当程序遇到异常时,不去处理异常,而是将异常抛出去,保证程序能继续往下执行,捕获异常则是指程序遇到异常时,将异常的错误信息进行处理,保证程序继续执行,代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49/** * 异常的处理方式有两种: * 一是使用throws或者throw:只是将错误抛出,不做任何处理 * 可以在代码中主动抛出错误,使用thorw关键字,格式为throw new Exception(); * 可以在方法上、类上抛出错误,使用thorws关键字,格式throws Exception * 而是使用try..catch..finally:捕获错误,处理错误 * 格式如下: * try{ * 可能发生错误的代码; * }catch(异常类){ * 抛出异常信息;//可以有多个catch块 * }finally{ * finally中的代码不管怎么样都会执行; * } * @author chaizepeng * */ public class ErrorTest { public static void main(String[] args) { int i = 5; int j = 0; //add方法抛出了异常,在这里捕获异常并作处理 try { add(i,j); } catch (ArithmeticException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }finally { System.out.println("做一下容灾处理。。。"); } } //在这里不处理错误,将错误抛出,谁调用这个方法,出错的时候再做处理 public static void add(int i , int j) throws Exception{ System.out.println(i/j); throw new Exception(); } }
开发者可以自定义异常,就是继承自Execption类,然后自定义异常即可,代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22public class NoZeroExection extends Exception{//继承自Exception类 public NoZeroExection() {//用构造方法来描述错误信息 System.out.println("不可出现数字0"); } } class Test{ public static void main(String[] args) { int flag = 0; try {//捕获异常 myExcetion(flag); } catch (NoZeroExection e) { System.out.println("出现错误:"); e.printStackTrace(); } } public static void myExcetion(int flag) throws NoZeroExection{//抛出异常 if (flag == 0) { throw new NoZeroExection(); } System.out.println("正常执行。。。"); } }
常见的异常:
空指针异常 | NullpoiontException |
数组下标越界 | ArrayIndexOutOfBoundsException |
参数错误 | ArithmeticException |
IO异常 | IOException |
类不存在异常 | ClassNotFoundException |
方法不存在异常 | NoSuchMethodException |
sql异常 | SQLException |
。。。。 |
最后
以上就是落后香烟最近收集整理的关于9、java中的异常处理机制的全部内容,更多相关9、java中内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复