何时使用用户Java关键字抛出用户定义的异常?

时间:2014-02-09 22:15:01

标签: java

是否可以创建用户定义的异常并仅在try-catch中捕获它,或者是否必须使用throw语句抛出用户定义的异常。

问题:我对是否何时使用throw关键字感到困惑?我认为throw与用户定义的Exceptions一起使用。

代码:(Java)

public genericPanel() {
  try {
    if (i.length == size) {
      throw new MyOwnDefinedError("Error - Size is 1 integer
                                                              to large");
     }
     for (int index=0;index<=i.length;index++) {
        System.out.println(i[index]);
     }
  } catch (MyOwnDefinedError o) {
       o.getMessage();
  } catch (Exception e) {
       e.getMessage();
  }
}

class MyOwnDefinedError extends Exception {
  MyOwnDefinedError(String myNewString) {
    super( myNewString);
}

5 个答案:

答案 0 :(得分:1)

无论用户是否定义,只要您想要抛出任何throw,就会使用

Exception。 “预定义”例外(例如IOException)或自定义例外(例如MyOwnDefinedError)之间没有区别。

答案 1 :(得分:0)

java中的throw关键字用于您正确的用户定义的异常。例如,您正在进行银行应用程序,并且您想从客户的帐户中提取资金。正常情况下,金额不能为负数,因此您可以抛出InvalidAmountException或类似的东西。

每当需要强调异常情况时,就会使用关键字本身,因此您将使用throw来抛出任何类型的异常,这些异常已经存在于API中或者是用户实现的异常。

当处理异常时 - 如果从Java扩展Exception类,则应使用throws关键字将Exception专门放在方法定义上。如果您希望在运行时弹出异常并可能中断程序的执行,则可以扩展RuntimeException。在这种情况下,处理它的异常是可选的 - 您不必使用throws指定它,或者您不必使用try / catch块包装方法的执行。

可以找到关于例外的完整教程here

答案 2 :(得分:0)

您可以在java文档中阅读有关抛出异常的答案: http://docs.oracle.com/javase/tutorial/essential/exceptions/throwing.html

  

在捕获异常之前,某些代码必须抛出一个代码。   任何代码都可以抛出异常:代码,包中的代码   由其他人编写的,例如Java附带的软件包   平台或Java运行时环境。无论抛出什么   异常,它总是抛出throw语句。

     

您可能已经注意到,Java平台提供了许多   异常类。所有类都是Throwable的后代   类,所有允许程序区分各种类型   在执行程序期间可能发生的异常。

     

您还可以创建自己的异常类来表示问题   这可能发生在您编写的类中。事实上,如果你是一个   包开发人员,您可能必须创建自己的异常集   允许用户区分可能发生的错误的类   您的包来自Java平台或其他平台中发生的错误   封装

答案 3 :(得分:0)

  • 投掷用于抛出异常。
  • 投掷是方法定义的一部分。
  • 在给定的时间点,throw语句只能抛出一个异常。
  • 抛出语句由异常实例修复。

答案 4 :(得分:0)

班级考试 {

void testDivision(float a,float b)
{
if(b=0.0)
 {
  try
  {
    throw new MathematicalException("Please, do not divide by zero");
  }
    catch (MathematicalException ae)
        {
        System.out.println(ae);
        }
 }
else
    {
    float result=a/b;
            System.out.println("Result:" + result);
    }       
}

public static void main(String args[])

{
float f1 = Float.parsefloat(args[0]);
float f2 = Float.parsefloat(args[1]);

Test t1 = new Test();
t1.testDivision(f1,f2);
}

class MathematicalException extends Exception

            {
                MathematicalException();



                MathematicalException(String msg)
    {
    super(msg);
    }
            }   

}