找出哪个实例在try-catch块中引发了异常

时间:2016-01-30 16:19:57

标签: java exception-handling

Java中是否有任何方法可以找出"谁" /"什么"扔掉了什么?

考虑下面的代码,该代码验证了几个Textfields(对哪些输入有效或哪些输入有效)。我想将相应的文本字段标记为红色。

public void validateInput() {
    try {
        textfieldName.validate();
        textfieldAge.validate();
    } catch (InvalidInputExcpetion e) {
        // Pseudocode
        // e.getThrower() would get me the reference to the Object which threw the exception
        (TextField e.getThrower()).markRed();
    }
}

我找到的唯一解决方案是扩展我的自定义激活以保留对投掷文本字段的引用,是不是更方便?

2 个答案:

答案 0 :(得分:3)

您可以将代码拆分为两个try catch

public void validateInput() {
    try {
        textfieldName.validate();
    } catch (InvalidInputExcpetion e) {
        // Error in the textfieldName
        // Eventually return if you need to validate only one field if an error is thrown
    }
    try {
        textfieldAge.validate();
    } catch (InvalidInputExcpetion e) {
        // Error in the textfieldAge
    }
}

答案 1 :(得分:0)

为了防止重复代码,您可以让validateInput将文本字段作为输入,因此它将验证一个文本字段。然后为每个文本字段调用它。

public void validateInput(TextField textField) {
    try {
        textField.validate();
    } catch (InvalidInputExcpetion e) {
        // Handle Error in the textField
    }
}

然后为每个TextField调用它:

validateInput(textfieldName);
validateInput(textfieldAge);