feat: support catching all errors, #220 (#710)

This commit is contained in:
Jun Yang
2024-06-17 22:48:57 +08:00
committed by GitHub
parent 612da52275
commit 3b5627b040
6 changed files with 115 additions and 37 deletions
+14 -1
View File
@@ -8,7 +8,7 @@ import { Template } from '../template/template'
const TRAIT = '__liquidClass__'
export abstract class LiquidError extends Error {
private token!: Token
public token!: Token
public context = ''
private originalError?: Error
public constructor (err: Error | string, token: Token) {
@@ -62,6 +62,19 @@ export class RenderError extends LiquidError {
}
}
export class LiquidErrors extends LiquidError {
public constructor (public errors: RenderError[]) {
super(errors[0], errors[0].token)
this.name = 'LiquidErrors'
const s = errors.length > 1 ? 's' : ''
this.message = `${errors.length} error${s} found`
super.update()
}
public static is (obj: any): obj is LiquidErrors {
return obj.name === 'LiquidErrors'
}
}
export class UndefinedVariableError extends LiquidError {
public constructor (err: Error, token: Token) {
super(err, token)