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