53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
# Error Handling in Blueprints
|
|
|
|
## Format Log Message Node
|
|
|
|
We have implemented "Format Message", which is an improved version of Unreal's
|
|
"Format Text". Unlike "Format Text", it has built-in support to print
|
|
vectors, rotations, enums, and quite a few other types.
|
|
|
|
We have also implemented "Format Log Message", which is like Format Message
|
|
except that the output goes to the unreal logs. It might help to familiarize
|
|
yourself with Unreal's built-in logging function, UE_LOG. Format Log Message
|
|
is meant to be the Blueprint front end to UE_LOG.
|
|
|
|
Format Message and Format Log Message both require a format string, which
|
|
will typically look something like this:
|
|
|
|
"Hello, {Name}, the weather today will be {Weather}"
|
|
|
|
When you set a format string such as the one above, the Format Message node
|
|
will add pins for the placeholders - in the example above, the pins
|
|
Name and Weather would be added. These are wildcard pins that you can
|
|
connect any printable value to.
|
|
|
|
To make a new type printable, look at FormatDataLibrary.h
|
|
|
|
Format Log Message accepts a severity level, this is directly based on
|
|
the severity levels supported by UE_LOG. It adds *ThrottledDisplay* and
|
|
*ThrottledLog*, which do the same thing as *Display* and *Log*, except
|
|
that output is limited to one message per second.
|
|
|
|
## The Blueprint Debugger Pauses on Error Messages
|
|
|
|
The blueprint debugger will pause whenever you log an error message. This is functionality we have added to Unreal.
|
|
You can control the severity at which it pauses: in the GameMode, there is a dropdown for the severity level.
|
|
You can also effectively turn it off by telling to only pause on fatal errors.
|
|
|
|
There is a quirk: the debugger pauses before the error gets put into the logs. So when you're in the
|
|
blueprint debugger,
|
|
the only place the error will appear is in the lower-right corner of the screen, where debugger messages are
|
|
reported. You won't see the error in the unreal output log. If you single-step, the error will appear
|
|
in the output log as well.
|
|
|
|
To understand how this is implemented, it helps to understand that log messages in unreal go to a bunch of
|
|
different output devices: the unreal editor output window, the visual studio output window, a log file, and
|
|
several more places. To dispatch messages to all these different destinations, Unreal has an output device
|
|
list that you can add an output device to.
|
|
|
|
To implement this break-on-error-message functionality, we implemented a pseudo-output-device.
|
|
The pseudo device doesn't actually send
|
|
the error message anywhere, it just triggers the debugger. For more information about implementation,
|
|
see BreakToDebugger.h
|
|
|