Trace:
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
applications:custom_errorhandling [2019/08/06 13:00] admin |
applications:custom_errorhandling [2019/08/06 22:40] admin |
||
---|---|---|---|
Line 20: | Line 20: | ||
</file> | </file> | ||
- | So, it's very easy to change the default error handling which shows a popup dialog with the error message and some details (stack trace). | + | So, it's very easy to change the default error handling which shows a popup dialog: |
- | As example, we'll show the exceptions directly in the work-screens. So, every work-screen should be able to show error messages. To make this possible, we introduce the following interface: | + | {{:applications:error_dialog.png?nolink|}} |
+ | |||
+ | with the error message and some details (stack trace). \\ | ||
+ | \\ | ||
+ | As an example of a custom error handling, we'll show the exceptions directly in the work-screens. So, every work-screen should be able to show error messages. To make this possible, we introduce the following interface: | ||
<file java> | <file java> | ||
Line 30: | Line 34: | ||
} | } | ||
</file> | </file> | ||
- | and all our work-screens should implement it like this example: | + | and all our work-screens should implement the interface, e.g.: |
<file java> | <file java> | ||
Line 41: | Line 45: | ||
{ | { | ||
labelMain.setText("ErrorArea"); | labelMain.setText("ErrorArea"); | ||
+ | labelMain.setForeground(UIColor.red); | ||
... | ... | ||
Line 62: | Line 67: | ||
</file> | </file> | ||
- | So, our work-screen example contains a new label in the SOUTH area (the bottom of the screen). The label will be hidden initially in **onLoad()**. Our screen is now ready to show error messages, but our application must be changed. To do this, we need a [[vaadin:customize_application|custom application]]. | + | So, our work-screen example contains a new label in the SOUTH area (the bottom of the screen). The label will be hidden initially in **onLoad()**. \\ |
+ | Our screen is now ready to show error messages, but our application must be changed. To do this, we need a [[vaadin:customize_application|custom application]]. | ||
Our application contains following code: | Our application contains following code: | ||
Line 90: | Line 96: | ||
public void showErrorMessage() | public void showErrorMessage() | ||
{ | { | ||
- | String message = liErrors.get(0).getMessage(); | + | String message = ExceptionUtil.getRootCause(liErrors.get(0)).getMessage(); |
| | ||
for (IWorkScreen screen : getWorkScreens()) | for (IWorkScreen screen : getWorkScreens()) | ||
Line 104: | Line 110: | ||
} | } | ||
</file> | </file> | ||
- | We collect all occurred Exceptions and show one message at the end. We iterate through all opened work-screens and check if the interface is implemented. In our example, every work-screen has to implement the interface IErrorHandler. A better solution would be a custom work-screen base class, e.g. | + | We collect all occurred Exceptions in a list - **liErrors** - and show one message at the end, see **showErrorMessages**. \\ |
+ | \\ | ||
+ | In **showErrorMessages**, we iterate through all opened work-screens and check if our interface is implemented. In our example, every work-screen has to implement the interface **IErrorHandler**. A better solution would be a custom work-screen base class, e.g. | ||
<file java> | <file java> | ||
Line 115: | Line 123: | ||
public class FirstWorkScreen extends MyCustomWorkScreen | public class FirstWorkScreen extends MyCustomWorkScreen | ||
</file> | </file> | ||
+ | |||
+ | And the result will look like following: | ||
+ | |||
+ | {{:applications:error_screen.jpg?nolink|}} |