处理Java异常的初学者
我正在学习java异常,并且一直被一个特定示例的问题所困扰 下面是我的类ErgaenztesAuto和我的主要方法。我的解释被抓住了,正在发挥作用。 有两件事我不明白:处理Java异常的初学者,java,exception,Java,Exception,我正在学习java异常,并且一直被一个特定示例的问题所困扰 下面是我的类ErgaenztesAuto和我的主要方法。我的解释被抓住了,正在发挥作用。 有两件事我不明白: 如果我试图访问try块外的对象,例如ergaenztesuto2.meldung(),编译器会告诉我他找不到对象ergaenztesuto2。如果我在try块中做同样的事情,它就会工作。因此,我必须将整个程序放在try块中。 正确的方法是什么?就像只将我希望运行的代码放入一个exeption 只要我的构造函数抛出异常,程序就会停
当抛出异常时,try块的执行被取消,直接转到catch块,然后是finally块。只需将代码放入必要的try块中,就可以实现所需的功能 例如(我编了一些类名):
当抛出异常时,try块的执行被取消,直接转到catch块,然后是finally块。只需将代码放入必要的try块中,就可以实现所需的功能 例如(我编了一些类名): 公元1年 拆分声明和初始化:
MyObject myObject;
try{
myObject = new MyObject();
} except (SomeExceptione) {
e.doSomethingWithException();
}
myObject.performObjectAction();
公元2年
我不确定我是否理解这一部分:
我如何放置异常处理的exeption处理
在构造函数中,代码的其余部分
仍然执行
但是,如果您想执行某个东西,不管是否抛出异常,您应该使用finally
块
MyObject myObject;
try{
myObject = new MyObject();
} except (SomeExceptione) {
e.doSomethingWithException();
} finally {
System.out.println("This gets executed always. My Object is: " + myObject.toString());
}
myObject.performObjectAction();
公元1年
拆分声明和初始化:
MyObject myObject;
try{
myObject = new MyObject();
} except (SomeExceptione) {
e.doSomethingWithException();
}
myObject.performObjectAction();
公元2年
我不确定我是否理解这一部分:
我如何放置异常处理的exeption处理
在构造函数中,代码的其余部分
仍然执行
但是,如果您想执行某个东西,不管是否抛出异常,您应该使用finally
块
MyObject myObject;
try{
myObject = new MyObject();
} except (SomeExceptione) {
e.doSomethingWithException();
} finally {
System.out.println("This gets executed always. My Object is: " + myObject.toString());
}
myObject.performObjectAction();
让我给你讲几点我刚才想说的话: 1) 在类定义ErgaenztesAuto中没有meldung()方法;在我看来,它只包含一种构造方法。 应该是这样的:
public void meldung() {
// TODO Auto-generated method stub
// your own code here
}
2) 对于要在捕获异常后继续运行的代码,需要有一个FINALLY块:
try {
// Objekt erzeugen
ErgaenztesAuto ErgaenztesAuto1 = new ErgaenztesAuto("Rene", "BMW", "Rot", 1981, 90, 10, "Berlin", "ABCD");
ErgaenztesAuto ErgaenztesAuto2 = new ErgaenztesAuto("Rene", "Audi", "Gelb", 2010, 70, -20000, "Muenchen", "WXYZ");
ErgaenztesAuto1.meldung();
ErgaenztesAuto2.meldung();
} catch (IllegalArgumentException e) {
System.out.println("Meine Exception trat auf: " + e.getMessage());
} finally {
System.out.println("I'M RUNNING AFTER EXCEPTION !!");
// OTHER CODE LOGIC
}
3)关于对象可见性的部分,请阅读一个java基础书籍,它将告诉你如何定义不同层次的不同对象;所以代码是这样的:(我把它们标记为“第1-2-3行”)
4) 最后一件事是,一般来说,您需要遵循一些JAVA规范,这里我将其作为“Camel Case命名”; 因此可以更改对象的名称 从 到谢谢。让我先谈谈我心中的几点想法: 1) 在类定义ErgaenztesAuto中没有meldung()方法;在我看来,它只包含一种构造方法。 应该是这样的:
public void meldung() {
// TODO Auto-generated method stub
// your own code here
}
2) 对于要在捕获异常后继续运行的代码,需要有一个FINALLY块:
try {
// Objekt erzeugen
ErgaenztesAuto ErgaenztesAuto1 = new ErgaenztesAuto("Rene", "BMW", "Rot", 1981, 90, 10, "Berlin", "ABCD");
ErgaenztesAuto ErgaenztesAuto2 = new ErgaenztesAuto("Rene", "Audi", "Gelb", 2010, 70, -20000, "Muenchen", "WXYZ");
ErgaenztesAuto1.meldung();
ErgaenztesAuto2.meldung();
} catch (IllegalArgumentException e) {
System.out.println("Meine Exception trat auf: " + e.getMessage());
} finally {
System.out.println("I'M RUNNING AFTER EXCEPTION !!");
// OTHER CODE LOGIC
}
3)关于对象可见性的部分,请阅读一个java基础书籍,它将告诉你如何定义不同层次的不同对象;所以代码是这样的:(我把它们标记为“第1-2-3行”)
4) 最后一件事是,一般来说,您需要遵循一些JAVA规范,这里我将其作为“Camel Case命名”; 因此可以更改对象的名称 从 到谢谢。您的构造函数没有处理异常。它在扔它。因此,您必须决定在哪里处理异常以及如何处理异常。至于第一个问题,只需在try-catch块之前声明变量即可。您想用这段代码做什么?这将永远不会执行,并且将始终在ERGAENZTESUTO ERGAENZTESUTO2=new ERGAENZTESUTO(“Rene”、“Audi”、“Gelb”、2010、70、-20000、“Muenchen”、“WXYZ”)行抛出异常;你真的应该用英文名字。这将使任何人都更容易理解您的代码。其中是
meldung()
implementation。您的构造函数没有处理异常。它在扔它。因此,您必须决定在哪里处理异常以及如何处理异常。至于第一个问题,只需在try-catch块之前声明变量即可。您想用这段代码做什么?这将永远不会执行,并且将始终在ERGAENZTESUTO ERGAENZTESUTO2=new ERGAENZTESUTO(“Rene”、“Audi”、“Gelb”、2010、70、-20000、“Muenchen”、“WXYZ”)行抛出异常;你真的应该用英文名字。这将使任何人都更容易理解您的代码。实现meldung()
在哪里。谢谢,这解决了我的问题。因为我在try{}块中声明了对象变量,所以它只在这里可用。在外部声明将使其可用。我不知道一个变量有两种不同的类型。用于声明的一个静态变量。以及变量在运行时指向的一个动态类型。那个动态类型就是对象的类型。谢谢,这就解决了我的问题。因为我在try{}块中声明了对象变量,所以它只在这里可用。在外部声明将使其可用。我不知道一个变量有两种不同的类型。用于声明的一个静态变量。以及变量在运行时指向的一个动态类型。该动态类型就是对象的类型。谢谢。我明白了。请看我对第一个答案的评论。谢谢。我明白了。请看我对第一个答案的评论。谢谢。我明白了。请看我对第一个答案的评论。谢谢。我明白了。请见见我的同事
ErgaenztesAuto ergaenztesAuto1 ;
ErgaenztesAuto ergaenztesAuto2 ;