黑马程序员技术交流社区

标题: 异常Exception的几种处理方法与报错 [打印本页]

作者: 黑马朱超    时间: 2013-3-16 17:16
标题: 异常Exception的几种处理方法与报错
本帖最后由 黑马朱超 于 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. }
复制代码

作者: 黑马朱超    时间: 2013-3-16 19:20
周末大家都happy去了,有木有......{:soso_e157:}
作者: 刘海浩    时间: 2013-3-16 22:03
catch是用于异常处理,没有catch代表异常没有被处理,而你的try代码块中 throw new Exception();会出现编译时异常,需要catch下,或者throws声明异常,不然根本无法运行,而finally 表示,不管是出现异常,还是没有出现异常,finally 里的代码都执行。
作者: 孙娜    时间: 2013-3-16 22:34
当在函数内部出现了throw抛出异常对象,那么必须给出对应的处理动作,要么在内部try catch处理,要么在函数上声明让调用者处理。
作者: 黑马朱超    时间: 2013-3-17 00:48
孙娜 发表于 2013-3-16 22:34
当在函数内部出现了throw抛出异常对象,那么必须给出对应的处理动作,要么在内部try catch处理,要么在函数 ...

恩,二选一就可。
作者: 黑马朱超    时间: 2013-3-17 00:51
刘海浩 发表于 2013-3-16 22:03
catch是用于异常处理,没有catch代表异常没有被处理,而你的try代码块中 throw new Exception();会出现编译 ...

如果我try里面有一个需要检测的代码,而不是throw的话,,那么就要么必须在函数上声明(RuntimeException除外),要么就必须在try后面加上catch.对不对?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2