摘要:韦东山android视频学习笔记
java的异常处理的原则如下:
1、我们先写一个没有对异常处理的程序,在进行除法运算的时候,除数是非零的话,运行时没有问题的,但是除数为零的时候,运行就会有问题,程序也不能往下执行(只打印了Begin of div)
1 public class Div{
2
3 public static void main(String args[]){
4 int m = Integer.parseInt(args[0]);
5 int n = Integer.parseInt(args[1]);
6
7 System.out.println("Begin of div");
8 int r = div(m,n);
9 System.out.println("end of div");
10
11 System.out.println(m+"/"+n+"="+r);
12 }
13
14 public static int div(int m,int n){
15 int r = m / n;
16 return r;
17 }
18 }
编译运行:
2、我们先写一个有对异常进行处理程序(自己处理异常),根据下面的运行结果,程序可以捕获到异常并且可以正常的执行.
1 public class Div2{
2
3 public static void main(String args[]){
4 int m = Integer.parseInt(args[0]);
5 int n = Integer.parseInt(args[1]);
6
7 System.out.println("Begin of div");
8 int r = div(m,n);
9 System.out.println("end of div");
10
11 System.out.println(m+"/"+n+"="+r);
12 }
13
14 public static int div(int m,int n){
15 int r = 0;
16 try {
17 r = m / n ;
18 }catch (ArithmeticException e){
19 System.out.println(e);
20 }finally{
21 System.out.println("This is finally of div");
22 }
23
24 return r;
25 }
26 }
编译运行:
3、我们写一个程序将异常抛出的类,这个抛出的异常是由main进行处理.
1 public class Div4{
2
3 public static void main(String args[]){
4 int m = Integer.parseInt(args[0]);
5 int n = Integer.parseInt(args[1]);
6 int r = 0;
7
8 System.out.println("Begin of div");
9 try {
10 r = div(m,n);
11 }catch (ArithmeticException e){
12 System.out.println(e);
13 }
14 System.out.println("end of div");
15
16 System.out.println(m+"/"+n+"="+r);
17 }
18
19 public static int div(int m,int n) throws ArithmeticException{
20 int r = 0;
21
22 r = m / n ;
23
24 return r;
25 }
26 }
编译运行:
4、如果在类的方法中如果处理了异常,那样在main方法中就不会对异常进行处理.
1 public class Div5{
2
3 public static void main(String args[]){
4 int m = Integer.parseInt(args[0]);
5 int n = Integer.parseInt(args[1]);
6 int r = 0;
7
8 System.out.println("Begin of div");
9 try {
10 r = div(m,n);
11 }catch (ArithmeticException e){
12 System.out.println(e);
13 }
14 System.out.println("end of div");
15
16 System.out.println(m+"/"+n+"="+r);
17 }
18
19 public static int div(int m,int n) throws ArithmeticException{
20 int r = 0;
21
22 try{
23 r = m / n ;
24 }catch(ArithmeticException e){
25 System.out.println("div :"+e);
26 }
27
28 return r;
29 }
30 }
编译运行:
5、如果在类的方法中如果处理了异常,同时在类方法中把异常抛出,那样main方法也可以捕获到异常.
1 public class Div6{
2
3 public static void main(String args[]){
4 int m = Integer.parseInt(args[0]);
5 int n = Integer.parseInt(args[1]);
6 int r = 0;
7
8 System.out.println("Begin of div");
9 try {
10 r = div(m,n);
11 }catch (ArithmeticException e){
12 System.out.println(e);
13 }
14 System.out.println("end of div");
15
16 System.out.println(m+"/"+n+"="+r);
17 }
18
19 public static int div(int m,int n) throws ArithmeticException{
20 int r = 0;
21
22 try{
23 r = m / n ;
24 }catch(ArithmeticException e){
25 System.out.println("div :"+e);
26 throw e;
27 }
28
29 return r;
30 }
31 }
编译运行:
6、现在我们上面第5个例子的代码,只有对这种算术运行的异常进行处理,如果我传入的参数个数不对,还有参数的格式也不对,程序是处理不了的。
为了修复上述的问题,我们添加对传入参数格式不对,还有传入参数个数不对这两种异常的处理。
1 public class Div7{
2
3 public static void main(String args[]){
4 int m = 0;
5 int n = 0;
6 int r = 0;
7
8 System.out.println("Begin of div");
9 try {
10 m = Integer.parseInt(args[0]);
11 n = Integer.parseInt(args[1]);
12 r = div(m,n);
13 }catch (ArithmeticException e){
14 System.out.println("main :" + e);
15 }catch (NumberFormatException e){
16 System.out.println("main :" + e);
17 }catch (ArrayIndexOutOfBoundsException e){
18 System.out.println("main :" + e);
19 }
20 System.out.println("end of div");
21
22 System.out.println(m+"/"+n+"="+r);
23 }
24
25 public static int div(int m,int n) throws ArithmeticException{
26 int r = 0;
27
28 try{
29 r = m / n ;
30 }catch(ArithmeticException e){
31 System.out.println("div :"+e);
32 throw e;
33 }
34
35 return r;
36 }
37 }
编译运行结果
7、在第6个例子继续优化,上面的程序目前只能对算术运算、参数格式还有参数个数不对的异常进行处理,其他的情况是无法处理的到的,我们可以添加对这些异常的父类RuntimeException来捕获异常.
1 public class Div8{
2
3 public static void main(String args[]){
4 int m = 0;
5 int n = 0;
6 int r = 0;
7
8 System.out.println("Begin of div");
9 try {
10 m = Integer.parseInt(args[0]);
11 n = Integer.parseInt(args[1]);
12 r = div(m,n);
13 }catch (ArithmeticException e){
14 System.out.println("main :" + e);
15 }catch (NumberFormatException e){ //去掉了参数个数的异常,仍然可以捕获到
16 System.out.println("main :" + e);
17 }catch (RuntimeException e){
18 System.out.println("main :" + e);
19 }
20 System.out.println("end of div");
21
22 System.out.println(m+"/"+n+"="+r);
23 }
24
25 public static int div(int m,int n) throws ArithmeticException{
26 int r = 0;
27
28 try{
29 r = m / n ;
30 }catch(ArithmeticException e){
31 System.out.println("div :"+e);
32 throw e;
33 }
34
35 return r;
36 }
37 }
编译运行结果
8、对于”不可查异常”, 系统也会抛出它,写不写throws效果一样
1 public class Div9{
2
3 public static void main(String args[]){
4 int m = 0;
5 int n = 0;
6 int r = 0;
7
8 System.out.println("Begin of div");
9 try {
10 m = Integer.parseInt(args[0]);
11 n = Integer.parseInt(args[1]);
12 r = div(m,n);
13 }catch (ArithmeticException e){
14 System.out.println("main :" + e);
15 }catch (NumberFormatException e){
16 System.out.println("main :" + e);
17 }catch (RuntimeException e){
18 System.out.println("main :" + e);
19 }
20 System.out.println("end of div");
21
22 System.out.println(m+"/"+n+"="+r);
23 }
24
25 //public static int div(int m,int n) throws ArithmeticException{
26 public static int div(int m,int n){
27 int r = 0;
28
29 try{
30 r = m / n ;
31 }catch(ArithmeticException e){
32 System.out.println("div :"+e);
33 throw e;
34 }finally{
35 System.out.println("finally of div");
36 }
37
38 return r;
39 }
40 }
编译运行:
相关代码存放在github,可以下载https://github.com/zzb2760715357/100ask
Original: https://www.cnblogs.com/zzb-Dream-90Time/p/10909419.html
Author: 请给我倒杯茶
Title: 第2课第5节_Java面向对象编程_异常_P【学习笔记】
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/539145/
转载文章受原作者版权保护。转载请注明原作者出处!