好的我有一个方法可以启动一个与数据相关的对象 - 一种工厂。
工厂拆分数据并将拆分的数据发送到进一步处理/细化数据的自定义对象。
我的问题是我使用一个对象记录错误,该对象基本上只是将字符串附加到一个错误日志中。有些错误是正确的 - 这意味着程序流程可以继续 - 但有些是严重,因此进程需要终止,我需要将错误日志抛回原始方法。并在此时停止处理数据,否则可能会搞砸。
原始方法返回您看到的字符串。我不必担心方法如何返回错误,只需要将其发送到它。
由于
答案 0 :(得分:1)
听起来你应该在遇到严重错误时抛出异常,并在try catch语句中调用工厂来处理它可以生成的错误。
有关详细信息,请查看http://download.oracle.com/javase/tutorial/essential/exceptions/throwing.html。
基本代码是
Exception e = new Exception();
throw e;
但是,您可以查看创建自己的异常类,以包含有关特定错误的更多信息。
编辑:您提到要返回错误日志,自定义异常可能包含此内容。
双重编辑: 像
这样的东西public class BadFactoryException extends Exception{
private String log;
public BadFactoryException(String log){
this.log = log
}
}
使用可以抛出类似
的工厂方法public returntype factory throws BadFactoryException(input){
try{
//code goes here
}catch(Exception e){
throw new BadFactoryExeption(log);
}
}
答案 1 :(得分:0)
您刚刚从第一天起就描述了例外和exception handling,a feature of Java。
答案 2 :(得分:0)
您的问题中未提及Exception
- 您是否已经使用过它们?
如果没有,这正是他们的目的。
如果这样做,那么您需要重新考虑如何捕获日志记录的异常。
答案 3 :(得分:0)
关于例外的基本教程:http://download.oracle.com/javase/tutorial/essential/exceptions/
另一篇好文章:http://www.javaworld.com/javaworld/jw-07-1998/jw-07-exceptions.html
如果您想要解决非关键的危急情况,请执行以下操作:
try {
// get here all your work
} catch (TerribleException e) {
// log and exit the application
}
在你的工作中,不要抛出任何异常。简单记录情况并继续工作。所以你需要的是定义什么情况应该停止执行,然后在那个地方抛出一些Exception并在启动工作的类中捕获它。
答案 4 :(得分:0)
我不是Java人,但我认为您需要使用try {...} catch (error) {...}
块。捕获到所需错误后,运行System.exit()
。这是一个例子:
try {
/* Do your stuff here */
} catch (ExceptionType name) {
/* Oh noes, a fatal error! */
print('Oh noes!');
System.exit()
}
这是你在找什么?
答案 5 :(得分:0)
好的,这就是我想要的......最终想出来了。
4个类,包括自定义异常。
package ExceptionTest;
public class Main {
public static void main(String[] args) {
exceptionTester();
}
private static void exceptionTester(){
try{
new FirstLevelObj().begin();
}
catch(MyException e){
System.out.println("Its worked!");
e.printStackTrace();
}
finally{
System.out.println("Oh young man..This Class doth created the other classes! \nAnd has now thrown the exception!");
}
}
}
package ExceptionTest;
public class FirstLevelObj {
private SecondLevelObj second;
public FirstLevelObj() throws MyException{
}
protected void begin()throws MyException{
try{
second = new SecondLevelObj();
second.start();
}
catch(MyException e){
throw new MyException("This Is The One!");
}
finally{
System.out.println("And finally..");
}
}
}
package ExceptionTest;
public class SecondLevelObj {
public SecondLevelObj(){
}
protected void start() throws MyException{
for(int i = 0; i<10; i ++){
if(i == 6){
System.out.println("Exception should be thrown:");
throw new MyException("An Error Hath Occurred Young Man!");
}
else{
System.out.println(i);
}
}
}
}
package ExceptionTest;
public class MyException extends Exception{
public MyException(String s){
super(s);
}
}