当前位置:  技术问答>java相关

抛出throw异常和捕捉catch异常的问题?

    来源: 互联网  发布时间:2015-03-27

    本文导语:     最近学到JAVA的异常处理,有三个问题搞不懂,请教一下大家。 一。书上说抛出THROW异常是为了让调用这个方法的方法来处理异常情况。如下代码所示:   static void arraytest(int i)  *throws ArrayIndexOutOfBoundsException ...

   最近学到JAVA的异常处理,有三个问题搞不懂,请教一下大家。
一。书上说抛出THROW异常是为了让调用这个方法的方法来处理异常情况。如下代码所示:
  static void arraytest(int i)
 *throws ArrayIndexOutOfBoundsException
  {
    写一个数组下标溢出错误
  }

  public static void main(String args[])
  {
    try
    {
      arraytest(i);//调用这个有错误的方法
    }
    catch(ArrayIndexOutOfBoundsException e)
    {
      输出提示
    }
  }
  这段代码我运行了一下,发现要不要带*号的那条THROWS抛出异常,运行结果都一样的。请问这个抛出THROW异常到底有什么实际的意义啊?我不用它,也可以用try_cacth_finally来处理嘛?

二。如何写用户自定义的异常?

三。怎么处理自定义的异常啊?

二、三题请用具体的代码举个例子,谢谢!!

|
1.throw和throws的区别在于,throw用于抛出异常,throws用于再抛出。抛出很好理解,就不解释了,再抛出的意思是,对于方法体内的异常,不想在该方法体内处理,就再次抛出,让调用他的方法来处理。
在你所举的例子中,之所以看不到加与不加throws的区别,因为你的方法
static void arraytest(int i)所抛出的是runtimeException,而且在MAIN方法中CATCH了。
试试看抛出一条IOException,如果在static void arraytest(int i)中没有catch,也不用throws再抛出的话,编译都通不过。
2.关于写和处理自定义异常,书上一般都有例子的,实在找不到再说吧

|

正是如此,你看一下throws的位置也明白了,throws是跟在方法名后的,说明是这个方法要抛出给其它方法处理的违例。而如果你在方法内要抛出一个违例,用throw new Exception()句子。

至于二三题,很简单的一个例子是 throw new Exception("例子错误");

你catch到它后,可以用 ex.getMessage()得到这个字串。

或是你自定义一个伟例,如
class myException extends Exception
{
  public myException(String msg){
    super(msg);
  }
}

这是一个最简单的违例,如果你想加入其它信息什么的,就扩充它。


|
  static void arraytest(int i)
*throws ArrayIndexOutOfBoundsException
  {
    try
    {
      写一个数组下标溢出错误
    }
    catch(ArrayIndexOutOfBoundsException e)
    {
      System.out.println("err in function");
    }
  }

  public static void main(String args[])
  {
    try
    {
      arraytest(i);//调用这个有错误的方法
    }
    catch(ArrayIndexOutOfBoundsException e)
    {
      System.out.println("err out function");
    }
  }
你再试一下,看看有什么不同,就知道该怎么用了。

|
语句throws描述本方法有可能会抛出异常。
"You do not need to handle or declare runtime exceptions or errors."
意思是你不需要定义活处理运行时异常,JVM会替你做的


|
the key is the concept of "unchecked".  You just throw a unchecked exception.  therefore, you do not need to add Throws clause after your method name.   If you throw a checked exception, you must add Throws clause after your method name.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教关于 throws,throw,catch...
  • 关于throw+throws+catch谁能给出一个简短(越短越好)而且简单(不要涉及太多别的知识点),还要完整的程序?
  • 谁能详细说明一下try catch和throws 和throw的区别和联系,具体用法……
  • 请问 throw 和 catch有什么区别?谢谢!
  • 请问try ... catch 和 throw有什么区别,谢谢
  • java命名空间java.util.logging类logger的类成员方法: throwing定义及介绍
  • throw and throws
  • 关于throw和throws方法的区别?
  • throws怎么使用?谢谢
  • 怎么调用涵有THROWS的方法?
  • 我看一个头文件,不知道“__THROW”是什么意思,请教高人!
  • throws关键字是什么意思?
  • 关于 throw exception
  • 初学java,对throw 抛出个新异常不很理解。请哪为高人可以帮忙解释下么?谢谢
  • 请教throws的用法,我的参考书上说得不明白。
  • 奇怪自己为什么不能抛出违例??throw new TimeOutException("time out");
  • 请问使用throw抛出异常时,如何自定义异常!!!
  • 关于try 和 throw 简单使用示例
  • mstest实现类似单元测试nunit中assert.throws功能
  • found an article about returning null or throwing exception.


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3