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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马朱超 中级黑马   /  2013-3-16 17:16  /  2394 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马朱超 于 2013-3-17 13:35 编辑

  对于可能出现异常的代码,有两种处理办法:

  第一、在方法中用try...catch语句捕获并处理异常,catch语句可以有多个,用来匹配多个异常。例如:
  1. public void p(int x){
  2.   try{
  3.   ...
  4.   }catch(Exception e){
  5.   ...
  6.   }finally{
  7.   ...
  8.   }
  9.   }
复制代码
方法一的几种处理的格式:
1)第一个格式:
  1. try

  2. {

  3. }

  4. catch

  5. {

  6. }
复制代码
2)第二个格式:
  1. try

  2. {

  3. }

  4. catch

  5. {



  6. }

  7. finally

  8. {

  9. }
复制代码
3)第三个格式:
  1. try

  2. {

  3. }

  4. finally

  5. {

  6. //关闭资源

  7. }
  8. //catch是用于异常处理,没有catch代表异常没有被处理;如果异常是<font color="Red">检测时候的异常</font>,那么必须声明,否则会出错。
复制代码
第二、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。例如:
  1. public void test1() throws MyException{
  2.   ...
  3.   if(....){
  4.   throw new MyException();
  5.   }
  6.   }

复制代码
对于方法一的第三种格式的无catch编译报错,被老师讲糊涂了...有哥们可以简单介绍下么
如下代码:
  1. class Demo
  2. {
  3.     public void method()
  4.     {
  5.               try
  6.            {

  7.       throw new Exception();
  8.              }
  9. finally
  10.            {
  11.     System.out.println("wrong!");
  12.            }
  13. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

5 个回复

倒序浏览
周末大家都happy去了,有木有......{:soso_e157:}
回复 使用道具 举报
catch是用于异常处理,没有catch代表异常没有被处理,而你的try代码块中 throw new Exception();会出现编译时异常,需要catch下,或者throws声明异常,不然根本无法运行,而finally 表示,不管是出现异常,还是没有出现异常,finally 里的代码都执行。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
当在函数内部出现了throw抛出异常对象,那么必须给出对应的处理动作,要么在内部try catch处理,要么在函数上声明让调用者处理。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
孙娜 发表于 2013-3-16 22:34
当在函数内部出现了throw抛出异常对象,那么必须给出对应的处理动作,要么在内部try catch处理,要么在函数 ...

恩,二选一就可。
回复 使用道具 举报
刘海浩 发表于 2013-3-16 22:03
catch是用于异常处理,没有catch代表异常没有被处理,而你的try代码块中 throw new Exception();会出现编译 ...

如果我try里面有一个需要检测的代码,而不是throw的话,,那么就要么必须在函数上声明(RuntimeException除外),要么就必须在try后面加上catch.对不对?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马