何时在用户定义的异常上使用user Java关键字Throw?

何时在用户定义的异常上使用user Java关键字Throw?,java,Java,是否可以创建用户定义的异常并仅在try-catch中捕获它,或者用户定义的异常必须与throw语句一起抛出 问:我有点困惑是否应该在什么时候使用throw关键字?我认为抛出与用户定义的异常一起使用 代码:(Java) public genericPanel(){ 试一试{ 如果(i.长度==尺寸){ 抛出新的MyOwnDefinedError(“错误-大小为1整数 总体而言); } for(int index=0;indexthrow在您想要抛出任何异常时使用,无论是否为用户定义的异常。在“预定

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

问:我有点困惑是否应该在什么时候使用throw关键字?我认为抛出与用户定义的异常一起使用

代码:(Java)

public genericPanel(){
试一试{
如果(i.长度==尺寸){
抛出新的MyOwnDefinedError(“错误-大小为1整数
总体而言);
}

for(int index=0;index
throw
在您想要抛出任何
异常时使用,无论是否为用户定义的异常。在“预定义”异常之间没有区别(如
IOException
)或者自定义一个,如在您的
myownedefinederror

中,java中的
throw
关键字用于用户定义的异常。您是对的。例如,您正在执行银行应用程序,您希望从客户帐户中提取资金。正常情况下,金额不能为负值,因此您将抛出
无效n异常
或类似情况

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

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


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

您可以阅读java文档中关于抛出异常的答案:

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

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

您还可以创建自己的异常类来表示问题 这可能发生在您编写的类中 包开发人员,您可能必须创建自己的异常集 类以允许用户区分可能在中发生的错误 您的软件包不受Java平台或其他应用程序中发生的错误的影响 包裹

  • Throw用于抛出异常
  • 抛出是方法定义的一部分
  • 在给定的时间点,throw语句只能引发一个异常
  • 抛出语句由异常实例进行后期修复
等级测试 {


}

我不明白。当你想中断程序流并抛出异常时,你可以使用
throw
。你的问题更多的是关于如何使用
catch
关键字来捕获你自己的异常吗?异常可以由Java运行时生成,
throw
n通过你调用的代码,或者你可以
throw
一个in异常本身的状态(可以是您定义的异常,也可以是预定义的异常).有了这些信息,你能澄清你不理解的地方吗?你能展示一个方法定义的例子吗。例如,如果我有自己的异常,它像上面一样扩展了异常。当我在方法存根中使用抛出时,那么创建该类的类和该类的实例有一个未处理的异常错误。
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);
}
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);
    }
            }