mirror of
https://github.com/Smaug123/KaTeX
synced 2025-10-05 19:28:39 +00:00
* Wrap `katex.render` examples with try...catch * Add starter template with defer in README.md * Update documentation to use `defer` and `onload` * Add documentation on async and pre loading KaTeX * Use sha384 for SRI * Revise wording according to comments * Minor changes * Fix article
36 lines
1.3 KiB
Markdown
36 lines
1.3 KiB
Markdown
---
|
|
id: error
|
|
title: Handling Errors
|
|
---
|
|
If KaTeX encounters an error (invalid or unsupported LaTeX) and `throwOnError`
|
|
hasn't been set to `false`, then `katex.render` and `katex.renderToString`
|
|
will throw an exception of type `katex.ParseError`.
|
|
The message in this error includes some of the LaTeX source code,
|
|
so needs to be escaped if you want to render it to HTML. For example:
|
|
|
|
```js
|
|
try {
|
|
var html = katex.renderToString(texString);
|
|
// '<span class="katex">...</span>'
|
|
} catch (e) {
|
|
if (e instanceof katex.ParseError) {
|
|
// KaTeX can't parse the expression
|
|
html = ("Error in LaTeX '" + texString + "': " + e.message)
|
|
.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
|
|
} else {
|
|
throw e; // other error
|
|
}
|
|
}
|
|
```
|
|
|
|
In particular, you should convert `&`, `<`, `>` characters to
|
|
`&`, `<`, `>` before including either LaTeX source code or
|
|
exception messages in your HTML/DOM.
|
|
(This can also be done using `_.escape`.)
|
|
Failure to escape in this way makes a `<script>` injection attack possible
|
|
if your LaTeX source is untrusted.
|
|
|
|
Alternatively, you can set `throwOnError` to `false` to use built-in behavior
|
|
of rendering the LaTeX source code with hover text stating the error.
|
|
See [rendering options](options.md).
|