何时在用户定义的Exception上使用用户Java关键字Throw



是否可以创建一个用户定义的异常并只在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);
}

throw在您想要抛出任何Exception时使用,无论是否由用户定义。"预定义"异常(如IOException)和自定义异常(如您的MyOwnDefinedError)之间没有区别。

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

在捕获异常之前,某些代码必须先抛出一个异常。任何代码都可能引发异常:您的代码、包中的代码由其他人编写,例如Java附带的包平台或Java运行时环境。不管扔什么例外的是,它总是与throw语句一起抛出。

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

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

  • Throw用于抛出异常
  • Throw是方法定义的一部分
  • 在给定的时间点,throw语句只能引发一个异常
  • throw语句由异常的实例进行后修复
java中的throw关键字用于用户定义的异常,您是对的。例如,您正在进行银行应用程序,并且希望从客户的帐户中提取资金。和正常情况一样,金额不能为负数,所以你会抛出InvalidAmountException或类似的东西。

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

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

关于异常的完整教程可以在这里找到。

class测试{

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);
}
}   

}

最新更新