发生异常时,异常类的责任是什么?

时间:2019-05-10 10:04:45

标签: java exception

当try块中发生异常时,catch块将对其进行处理。那么异常类的责任是什么?我在Java的异常类中发现,只看到了一些提供有关exception(???)信息的函数。发生异常时异常类是做什么的。如果我想编写自己的MyException扩展Exception,应该在异常类中编写什么方法来处理我的异常

4 个答案:

答案 0 :(得分:1)

  1. 异常发生时异常类是什么
    没事。

  2. 如果我想编写自己的MyException扩展Exception,我在异常类中编写了什么方法来处理我的异常
    您不需要执行任何操作,但是您可能需要构造函数来设置消息并存储一些相关信息。

答案 1 :(得分:0)

当某些代码遇到“问题”时,它可能会创建一个描述该问题的Exception对象,并将其扔到调用代码中,以表明“由于X的原因,事情未按计划进行”。

由调用代码决定处理异常(带有try / catch块)并采取适当措施。异常不说或不在乎下一步该怎么做。

如果您想以“标准”例外所允许的范围更精确地描述特定问题,则可以创建自己的例外。假设您销售的产品只能卖给20至40岁的人:

throw new AgeLimitException(clientAge, 20, 40);

和客户端代码:

try {
  buyProduct();
} catch (AgeLimitException e) {
  showMessage("Your age is " + e.getAge() + " but you must be between " + e.minAge()
            + " and " + e.maxAge() + " to buy this product");
}

如您所见,AgeLimitException的作用仅仅是提供有关所发生问题的信息。

答案 2 :(得分:0)

我们创建User-Defined-Exception类来处理即将发生的异常,当发生异常时,它将创建Exception类对象,在该对象中,我们声明了下一步要做的事情,因此程序流程或流程将继续进行没坏。

答案 3 :(得分:0)

Exception类是Throwable的类型。它只会为您提供一个异常(破坏您的执行流程的问题)信息。

Throwable也是所有ErrorException的类和超类(父类)。 Java虚拟机仅抛出属于此类(或其子类之一)的实例的对象,或者Java throw语句可以抛出该对象。同样,在catch子句中,只有此类或其子类之一可以作为参数类型。

自定义异常:Java提供了创建我们自己的异常的工具,这些异常基本上是Exception的派生类。

代表使用定义的异常的类

class MyException extends Exception 
{ 
    public MyException(String s) 
    { 
        // Call constructor of parent Exception 
        super(s); 
    } 
} 

使用上面的MyException的类

public class Main 
{ 
  // Driver Program 
  public static void main(String args[]) 
  { 
    try
    { 
        // Throw an object of user defined exception 
        throw new MyException("My own exception"); 
    } 
    catch (MyException ex) 
    { 
        System.out.println("Caught"); 

        // Print the message from MyException object 
        System.out.println(ex.getMessage()); 
    } 
  } 
}