「java抛出不了」java为什么要抛出异常
本篇文章给大家谈谈java抛出不了,以及java为什么要抛出异常对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中自定义异常无法抛出怎么办
- 2、JAVA为什么子类继承父类方法之后,不能抛出
- 3、Java 异常抛出不了,求助!!!
- 4、java中使用throws无法抛出异常。代码如下:
- 5、java抛出异常
java中自定义异常无法抛出怎么办
怎么会无法抛出?没有抛出,就说明你的代码没有出现你所要的异常。你看下我写的一个很简单的自定义异常。
public class TestB {
public static void main(String[] args) {
int i = 5;
if (i == 5) {
try {
throw new MyException("i不能等于5");
} catch (MyException e) {
e.printStackTrace();
}
}
}
}
class MyException extends Exception {
public MyException() {
};
public MyException(String message) {
super(message);
}
}
JAVA为什么子类继承父类方法之后,不能抛出
子类在覆盖父类方法的时候,父类的引用是可以调用该方法的,如果父类的引用调用子类的方法,那么这个多抛出来的异常,就可能处于一种无法被处理的状态。下面,我就通过代码进行一下演示:
我们先定义一个Animal类:
[java] view plain copy
class Animal
{
public void eat()throws IOException,FileNotFoundException
{
System.out.println("eat");
}
}
接着,我们再定义一个Tiger类继承该Animal类
[cpp] view plain copy
class Tiger extends Animal
{
public void eat()throws IOException ,Exception
{
System.out.println("Tiger eat animal");
}
}
这样,tiger的eat方法里,就有一个Exception 异常,这个异常的级别高于IO。也就是说对IO异常的处理,无法处理Exception 异常。
这个时候,如果我们定义一个测试方法,测试动物吃东西这个方法。
如下:
[java] view plain copy
class Test
{
public void TestAnimalEat(Animal a)
{
try
{
a.eat();
}
catch(FileNotFoundException e1)
{
e1.printStackTrace();
}
catch(IOException e2)
{
e2.printStackTrace();
}
}
}
那么,这个方法是完全正确的,因为他处理了eat方法的两个异常。一个抛出,一个捕获。
这个时候,如果我们再进行如下的操作:
[java] view plain copy
class TestDemo
{
public static void main(String[] args)
{
Test t = new Test();
Tiger tiger = new Tiger();
t.TestAnimalEat(tiger);
}
}
则在调用tiger对象的时候,Test中的TestAnimalEat()方法只处理Animal类的eat()方法的两个异常,而这个Tiger类中的eat()方法多出来的Exception,就无法进行处理。所以,JAVA就不允许做这种子类抛出比父类更多的异常。
当然,这里说更多是不合适的,子类不能抛出父类异常本身和其子异常以外的其他异常。比如,如果父类抛出一个Exception 异常,那么子类就可以随心所欲的抛出很多的异常了。因为这些异常都是父类异常的子异常。
那么如果要联系现实,应该如何说呢。
一个修理家电的人,他能够修理冰箱,电脑,洗衣机,电视机。 一个年轻人从他这里学的技术,就只能修理这些家电,或者更少。你不能要求他教出来的徒弟用从他这里学的技术去修理直升飞机。
Java 异常抛出不了,求助!!!
try{
if(nban.getbalance())
throw new Exception("余额不足!");
else{
ban.deposit(n);
System.out.println("存款成功,余额是:"+ban.getbalance());
}
}catch(Exception e){
System.out.println(e);
}
}
你是想在控制台输出?
你这个就是throw new Exception("余额不足!");抛出一个异常,然后给catch了。
System.out.println(e);也是不对的。应该是e.printStackTrace();
java中使用throws无法抛出异常。代码如下:
运行结果
Exception in thread "main" java.lang.Exception
at Test.spell(Test.java:4)
at Test.main(Test.java:14)
the0success
the1success
the2success
the3success
the4success
i等于5时抛出了异常
java抛出异常
抛出异常分为两种吧,一种是制造异常,一种是抛出可能发生的异常
throw关键字,抛出一个异常(即制造一个异常),用法 throw 异常 ,该异常必须为java.lang.Exception的子类,如果是RuntimeException子类的话,则不需要捕获或抛出异常。
throws关键字,抛出一个可能发生的异常,用在函数定义中,末尾处,以主函数为例子,public static void main(String[] args) throws 异常; 该异常必须为Exception子类,常用于其子类,是这一个方法体执行中可能抛出(throw)的异常处理。如果不进行throws,也可以用try...catch语句进行捕获。
自定义异常,类一定(间接)继承java.lang.Exception类,当然,继承java.lang.RuntimeException就可以不用进行处理,下面举一个例子:
public class TestException extends Exception {
public TestException(String message) {
super(message);
}
public TestException() {}
}
一般自定义异常需要有2个构造函数,五参构造器和String类型构造器,有参构造调用父类有参构造。
关于java抛出不了和java为什么要抛出异常的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-21,除非注明,否则均为
原创文章,转载请注明出处。