Java异常处理总结
1.java中常见的异常有大概四种:1.1.算数异常 java.lang.ArithmeticException
[Java] 纯文本查看 复制代码
|
1
2
3
|
int a = 0; int b = 10; System.out.println(b/a); |
1.2.空指针异常 java.lang.NullPointerException
[Java] 纯文本查看 复制代码
|
1
2
|
String a = null; a.charAt(3); |
1.3.类型转换异常 java.lang.ClassCastException
[Java] 纯文本查看 复制代码
|
1
2
3
|
Object o = new Integer(1); String s = (String)o; System.out.println(s); |
1.4.数组下标越界 java.lang.ArrayIndexOutOfBoundsException
[Java] 纯文本查看 复制代码
|
1
2
|
String[] s = new String[2]; System.out.println(s[5]); |
2.对异常的处理:
2.1基本语句:
使用 try{
可能会出现异常的代码}
catch(ParseException e){
捕获执行的代码}
finally{
无论是否发生异常都执行的代码}
注意:
没有使用try catch的时候程序出现异常,后续程序不能执行;使用try catch以后,异常被封装在try catch里,后续程序仍能执行。
附上一段代码以便验证
[Java] 纯文本查看 复制代码
|
1
2
3
4
5
6
7
8
9
|
try{ int a = 0; int b = 10; int c = b/a; System.out.println("执行成功"); }catch(Exception e){ System.out.println("出现异常"); } System.out.println("------"); |
2.2try{}catch{}的机制是一经发现异常就转入catch
代码举例:
[Java] 纯文本查看 复制代码
|
1
2
3
4
5
6
|
<font style="color:rgb(77, 77, 77)"><font face="""><font style="font-size:16px">//出现异常就转入catch try{ throw new Exception(); }catch(Exception e){ System.out.println("xxxx"); }</font></font></font> |
2.3多分支异常:
附上代码:
[Java] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<font style="color:rgb(77, 77, 77)"><font face="""><font style="font-size:16px">String st = "2019年12-01"; SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd");try{ Date dt = d.parse(st); //解析异常 String s = null;//空指针异常 s.charAt(1); int a = 0; int b = 10; int c = b/a;//算术异常 }catch(ParseException e){ System.out.println("解析异常");}catch(NullPointerException e1){ System.out.println("空指针异常");}catch(ArithmeticException e2){ System.out.println("算术异常");}finally{ System.out.println("无论如何都会执行");}</font></font></font> |
3.关于throw与自定义异常3.1关于throw的一些看法Throws的含义是抛出异常自己不处理,谁调用谁处理;不推荐把异常扔给主方法
Cat类:
[Java] 纯文本查看 复制代码
|
1
2
3
4
5
6
|
<font style="color:rgb(77, 77, 77)"><font face="""><font style="font-size:16px">public class Cat {public void MiaoWu() throws ParseException{ Dog a = new Dog(); a.bit();}}</font></font></font> |
Dog类:
[Java] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
public class Dog {public void bit() throws ParseException{ String st = "从那个坏人身上撕了一块肉"; SimpleDateFormat d = new SimpleDateFormat("yyyy-MM-dd"); Date dt = d.parse(st); System.out.println("汪汪汪");}} |
ThrowsTest测试类:
[AppleScript] 纯文本查看 复制代码
|
1
2
3
4
5
|
public static void main(String[] args) throws ParseException { // TODO Auto-generated method stub Dog d = new Dog(); d.bit();} |
由于在主方法也进行了抛出,故出现了以下错误。
由于在主方法也进行了抛出,故出现了以下错误。![]()
如果此时改成try{}catch处理异常会如何呢?下面我们来验证
[AppleScript] 纯文本查看 复制代码
|
1
2
3
4
5
6
7
8
9
|
public static void main(String[] args){ // TODO Auto-generated method stub try{ Dog d = new Dog(); d.bit(); }catch(ParseException e){ System.out.println("出现解析异常"); }} |
出现解析异常
3.2自定义异常
自定义一个异常:
[Java] 纯文本查看 复制代码
|
1
2
|
<font style="color:rgb(77, 77, 77)"><font face="""><font style="font-size:16px">public class LuckyException extends Exception{}</font></font></font> |
Hello类:
[AppleScript] 纯文本查看 复制代码
|
01
02
03
04
05
06
07
08
09
10
|
<font style="color:rgb(77, 77, 77)"><font face="""><font style="font-size:16px">public class Hello {public void hi() throws LuckyException{ // TODO Auto-generated method stub if(Math.random()<0.1) //百分之九十是异常的,百分之十输出Hello World! System.out.println("Hello World!"); else throw new LuckyException();}}</font></font></font> |
Test测试类:
[Java] 纯文本查看 复制代码
|
1
2
3
4
|
<font style="color:rgb(77, 77, 77)"><font face="""><font style="font-size:16px">public static void main(String[] args) throws LuckyException {Hello h = new Hello();h.hi();}</font></font></font> |

浙公网安备 33010602011771号