当try块中发生异常时,catch块将对其进行处理。那么异常类的责任是什么?我在Java的异常类中发现,只看到了一些提供有关exception(???)信息的函数。发生异常时异常类是做什么的。如果我想编写自己的MyException扩展Exception,应该在异常类中编写什么方法来处理我的异常
答案 0 :(得分:1)
异常发生时异常类是什么
没事。
如果我想编写自己的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
也是所有Error
和Exception
的类和超类(父类)。 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());
}
}
}