当前位置 : 主页 > 编程语言 > 其它开发 >

try{}catch(){}的执行过程

来源:互联网 收集:自由互联 发布时间:2022-05-30
情形一:catch中抛出异常,让调用方来处理 1 public class HelloWorld { 2 public static void main(String []args) { 3 System.out.println("Hello World!" ); 4 String c = "wo" ; 5 try { 6 c = test(); // "wo" 7 } catch (Exception e)

情形一:catch中抛出异常,让调用方来处理

 1 public class HelloWorld {
 2     public static void main(String []args) {
 3         System.out.println("Hello World!");
 4         String c = "wo";
 5         try{
 6             c = test();  // "wo"
 7         }catch(Exception e){
 8             e.printStackTrace();
 9         }
10         System.out.println(c); // "wo"
11     }
12     public static String  test() throws Exception{
13         int a = 10;
14         int b = 0;
15         try{
16             System.out.print("前");    
17             int d = a/b;
18             return "hello";  // 不执行
19         }catch(Exception e){
20             System.out.print("后");
21             throw new Exception("有问题"); //函数结束,抛出异常
22         }
23         //return "默认值";
24     }
25 }

注解:

  1、因为throw会直接抛出错误,后面语句不会再执行,所以不能写第23行。

  2、因为异常发生在17行(int d = a/b;),所以17行之前代码还是会生效,之后的代码则不会执行,直接进入catch中;

  3、第6行(c = test();),c的值并没有被函数test修改成功,此时c="wo"。

 

情形二:catch中不抛异常,直接处理

 public class HelloWorld {
 2     public static void main(String []args) {
 3         System.out.println("Hello World!");
 4         String c = "wo";
 5         try{
 6             c = test(); // "默认值"
 7         }catch(Exception e){
 8             e.printStackTrace();
 9         }
10         System.out.println(c); // "默认值"
11     }
12     public static String  test() throws Exception{
13         int a = 10;
14         int b = 0;
15         try{
16             System.out.print("前");    
17             int d = a/b;
18             return "hello";  // 不执行
19         }catch(Exception e){
20             System.out.print("后");
21             //throw new Exception("有问题");
22         }
23         return "默认值";
24     }
25 }

注解:

  1、因为函数是有返回类型(String),所以在没有第21行的情形下,没有第23行就会报错。此函数必须要有返回值(必须有第23行)。

  2、函数test()有返回值,此时c="默认值",已经被函数test修改。

  3、因为test方法没有抛出异常,所以调用方main函数不需要try-catch,代码可以改写成如下形式:

 public class HelloWorld {
 2     public static void main(String []args) {
 3         System.out.println("Hello World!");
 4         String c = "wo";
 6         c = test(); // "默认值"
10        System.out.println(c); // "默认值"
11     }
12     public static String  test(){
13         int a = 10;
14         int b = 0;
15         try{
16             System.out.print("前");    
17             int d = a/b;
18             return "hello";  // 不执行
19         }catch(Exception e){
20             System.out.print("后");
22         }
23         return "默认值";
24     }
25 }

 

人生很长,一秒太短,一个月不长不短刚刚好! 加油少年! ---------LeaningBD

【文章转自:日本站群服务器 http://www.558idc.com/japzq.html处的文章,转载请说明出处】

上一篇:【零基础学Web安全】Web安全基础篇(一)
下一篇:没有了
网友评论