「java抛出不了」java为什么要抛出异常

博主:adminadmin 2022-12-21 10:36:07 58

本篇文章给大家谈谈java抛出不了,以及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为什么要抛出异常的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。