A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小凡_fly 于 2014-12-5 09:17 编辑

  1. //第一个:        
  2. class Demo{
  3.         public static void main(String[] args){
  4.                 try{
  5.                         showExce();
  6.                         System.out.println("A");
  7.                 }
  8.                 catch(Exception e){
  9.                         System.out.println("B");
  10.                 }
  11.                 finally{
  12.                         System.out.println("C");
  13.                 }
  14.                 System.out.println("D");
  15.         }
  16.         public static void showExce()throws Exception{
  17.                 throw new Exception();
  18.         }
  19. }





  20. ---------------------------------------------
  21. //第二个
  22. class Demo{        
  23.         public static void func(){
  24.                 try{
  25.                         throw  new Exception();
  26.                         System.out.println("A");
  27.                 }
  28.                 catch(Exception e){
  29.                         System.out.println("B");
  30.                 }
  31.         }
  32.         public static void main(String[] args){
  33.                 try{
  34.                         func();
  35.                 }
  36.                 catch(Exception e){
  37.                         System.out.println("C");
  38.                 }
  39.                 System.out.println("D");
  40.         }
  41. }



复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

9 个回复

倒序浏览
第二个throw  new Exception();下面不能有 System.out.println("A");因为执行不到
回复 使用道具 举报
本帖最后由 Smart_lll 于 2014-12-3 09:33 编辑

对于这个问题,毕老师上课是讲到的,你自己定义的showExce();函数,在函数上使用了throws Exception抛出异常 ,throws Exception的意思是这个函数可能抛出异常,但不一定抛出异常,调用该函数的调用者不知道showExce()中的代码,更不会知道showExce()一定会产生异常,调用者是按照可能有异常来处理的,因此后面可以有别的语句,编译时不会报错;而第二个中你写的throw  new Exception()语句,它的意思是一定会产生异常,后面的语句是不可能执行到的,因此后面是不可以跟语句的,所以编译会失败。第二个中的情况相当于是在showExce()函数中的throw new Exception();后又加了一个输出语句,即当showExce()函数改成以下代码:
public static void showExce()throws Exception{
                throw new Exception();
                System.out.println("NONONO");
        }
它也会编译失败。(以上仅是个人理解,有错误请指出,谢谢! 欢迎交流,QQ:2207706995)

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报 1 0
Smart_lll 发表于 2014-12-3 09:32
对于这个问题,毕老师上课是讲到的,你自己定义的showExce();函数,在函数上使用了throws Exception抛出异 ...

谢了     膜拜ing
回复 使用道具 举报
Smart_lll 发表于 2014-12-3 09:32
对于这个问题,毕老师上课是讲到的,你自己定义的showExce();函数,在函数上使用了throws Exception抛出异 ...

谢了,秒懂
回复 使用道具 举报

能帮助你就OK!:lol
回复 使用道具 举报
在函数中抛出异常,程序就会停止运行,所以第二个会直接退出,
回复 使用道具 举报
chun 中级黑马 2014-12-3 11:35:55
8#
;P毕老师视频里有讲到这题的,认真点看哦  25天的第十天、视频123
回复 使用道具 举报
也在学习异常中。
回复 使用道具 举报
学习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马